You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ns...@apache.org on 2011/12/28 20:40:41 UTC

svn commit: r1225317 - in /hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver: HRegion.java StoreScanner.java metrics/SchemaMetrics.java

Author: nspiegelberg
Date: Wed Dec 28 19:40:41 2011
New Revision: 1225317

URL: http://svn.apache.org/viewvc?rev=1225317&view=rev
Log:
[master] upgrade the INCREMENT and GET SIZE metrics as schema metrics

Summary:
The INCREMENT and GET SIZE metrics are still using the old style of per column
family metrics. So upgrade these 2 metrics as schema metrics.

Tag this diff as [master] since this problem has been solved in open source
trunk.

Test Plan:
Run all the unit tests. The following 4 unit tests are failed with and without
this change.

TestScanner
TestZKBasedReopenRegion
TestHeapSize
TestRegionStateOnMasterFailure

Reviewers: kannan, mbautin

Reviewed By: kannan

CC: hbase-eng@lists, nspiegelberg, kannan

Differential Revision: 377941

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/SchemaMetrics.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=1225317&r1=1225316&r2=1225317&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java Wed Dec 28 19:40:41 2011
@@ -293,20 +293,6 @@ public class HRegion implements HeapSize
       new ConcurrentHashMap<String,
                             Pair<AtomicLong, AtomicInteger>>();
 
-  /**
-   * Method to transform a single column family in byte[] format into a
-   * signature for printing out in metrics. Used as overloading so as to not
-   * create an extra Set. Could have gone further and imposed restriction on the
-   * Set version to be used for length > 1, but that puts strain on method user.
-   *
-   * @param family
-   *          the family to convert
-   * @return the string to print out in metrics
-   */
-  public static String createMutationSignature(byte[] family) {
-    return SchemaMetrics.CF_PREFIX + Bytes.toString(family);
-  }
-
   public static void incrNumericMetric(String key, long amount) {
     AtomicLong oldVal = numericMetrics.get(key);
     if (oldVal == null) {
@@ -3543,7 +3529,8 @@ public class HRegion implements HeapSize
 
     // do after lock
     long after = EnvironmentEdgeManager.currentTimeMillis();
-    String signature = HRegion.createMutationSignature(family);
+    String signature = SchemaMetrics.generateSchemaMetricsPrefix(
+        this.getTableDesc().getNameAsString(), family.toString());
     HRegion.incrTimeVaryingMetric(signature + ".increment_", after - before);
 
     if (flush) {

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java?rev=1225317&r1=1225316&r2=1225317&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java Wed Dec 28 19:40:41 2011
@@ -29,6 +29,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.regionserver.metrics.SchemaMetrics;
 import org.apache.hadoop.hbase.util.Bytes;
 
 /**
@@ -183,13 +184,15 @@ class StoreScanner extends NonLazyKeyVal
    * To be called after the store variable has been initialized!
    */
   private void initializeMetricNames() {
-    byte[] family;
-    if (null != this.store) {
-      family = this.store.getFamily().getName();
-    } else {
-      family = Bytes.toBytes("__unknown");
+    String tableName = SchemaMetrics.UNKNOWN;
+    String family = SchemaMetrics.UNKNOWN;
+    if (store != null) {
+      tableName = store.getTableName();
+      family = Bytes.toString(store.getFamily().getName());
     }
-    String mutationSignature = HRegion.createMutationSignature(family);
+
+    String mutationSignature = SchemaMetrics.generateSchemaMetricsPrefix(
+        tableName, family);
     this.metricNameGetsize = mutationSignature + ".getsize";
   }
 

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/SchemaMetrics.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/SchemaMetrics.java?rev=1225317&r1=1225316&r2=1225317&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/SchemaMetrics.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/SchemaMetrics.java Wed Dec 28 19:40:41 2011
@@ -514,7 +514,7 @@ public class SchemaMetrics {
    * @param cfName the column family name
    * @return schemaMetricsPrefix
    */
-  private static String generateSchemaMetricsPrefix(final String tableName,
+  public static String generateSchemaMetricsPrefix(final String tableName,
       final String cfName){
     String schemaMetricPrefix =
       tableName.equals(TOTAL_KEY) ? "" : TABLE_PREFIX + tableName + ".";