You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gc...@apache.org on 2012/09/19 22:40:22 UTC

svn commit: r1387746 - in /hbase/trunk/hbase-server/src: main/java/org/apache/hadoop/hbase/regionserver/ main/java/org/apache/hadoop/hbase/regionserver/metrics/ test/java/org/apache/hadoop/hbase/regionserver/

Author: gchanan
Date: Wed Sep 19 20:40:22 2012
New Revision: 1387746

URL: http://svn.apache.org/viewvc?rev=1387746&view=rev
Log:
HBASE-6591 checkAndPut executed/not metrics

Modified:
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java?rev=1387746&r1=1387745&r2=1387746&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java Wed Sep 19 20:40:22 2012
@@ -239,6 +239,8 @@ public class HRegion implements HeapSize
   final AtomicLong numPutsWithoutWAL = new AtomicLong(0);
   final AtomicLong dataInMemoryWithoutWAL = new AtomicLong(0);
 
+  final Counter checkAndMutateChecksPassed = new Counter();
+  final Counter checkAndMutateChecksFailed = new Counter();
   final Counter readRequestsCount = new Counter();
   final Counter writeRequestsCount = new Counter();
 
@@ -2416,7 +2418,7 @@ public class HRegion implements HeapSize
    * @param lockId
    * @param writeToWAL
    * @throws IOException
-   * @return true if the new put was execute, false otherwise
+   * @return true if the new put was executed, false otherwise
    */
   public boolean checkAndMutate(byte [] row, byte [] family, byte [] qualifier,
       CompareOp compareOp, ByteArrayComparable comparator, Writable w,
@@ -2498,8 +2500,10 @@ public class HRegion implements HeapSize
             prepareDelete(d);
             internalDelete(d, HConstants.DEFAULT_CLUSTER_ID, writeToWAL);
           }
+          this.checkAndMutateChecksPassed.increment();
           return true;
         }
+        this.checkAndMutateChecksFailed.increment();
         return false;
       } finally {
         if(lockId == null) releaseRowLock(lid);
@@ -4229,6 +4233,10 @@ public class HRegion implements HeapSize
         newRegionInfo, a.getTableDesc(), null);
     dstRegion.readRequestsCount.set(a.readRequestsCount.get() + b.readRequestsCount.get());
     dstRegion.writeRequestsCount.set(a.writeRequestsCount.get() + b.writeRequestsCount.get());
+    dstRegion.checkAndMutateChecksFailed.set(
+      a.checkAndMutateChecksFailed.get() + b.checkAndMutateChecksFailed.get());
+    dstRegion.checkAndMutateChecksPassed.set(
+      a.checkAndMutateChecksPassed.get() + b.checkAndMutateChecksPassed.get());
     dstRegion.initialize();
     dstRegion.compactStores();
     if (LOG.isDebugEnabled()) {
@@ -5034,7 +5042,7 @@ public class HRegion implements HeapSize
   public static final long FIXED_OVERHEAD = ClassSize.align(
       ClassSize.OBJECT +
       ClassSize.ARRAY +
-      37 * ClassSize.REFERENCE + Bytes.SIZEOF_INT +
+      39 * ClassSize.REFERENCE + Bytes.SIZEOF_INT +
       (7 * Bytes.SIZEOF_LONG) +
       Bytes.SIZEOF_BOOLEAN);
 

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1387746&r1=1387745&r2=1387746&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Wed Sep 19 20:40:22 2012
@@ -1453,6 +1453,8 @@ public class  HRegionServer implements C
     long memstoreSize = 0;
     int readRequestsCount = 0;
     int writeRequestsCount = 0;
+    long checkAndMutateChecksFailed = 0;
+    long checkAndMutateChecksPassed = 0;
     long storefileIndexSize = 0;
     HDFSBlocksDistribution hdfsBlocksDistribution =
       new HDFSBlocksDistribution();
@@ -1476,6 +1478,8 @@ public class  HRegionServer implements C
       dataInMemoryWithoutWAL += r.dataInMemoryWithoutWAL.get();
       readRequestsCount += r.readRequestsCount.get();
       writeRequestsCount += r.writeRequestsCount.get();
+      checkAndMutateChecksFailed += r.checkAndMutateChecksFailed.get();
+      checkAndMutateChecksPassed += r.checkAndMutateChecksPassed.get();
       synchronized (r.stores) {
         stores += r.stores.size();
         for (Map.Entry<byte[], Store> ee : r.stores.entrySet()) {
@@ -1549,6 +1553,8 @@ public class  HRegionServer implements C
         (int) (totalStaticBloomSize / 1024));
     this.metrics.readRequestsCount.set(readRequestsCount);
     this.metrics.writeRequestsCount.set(writeRequestsCount);
+    this.metrics.checkAndMutateChecksFailed.set(checkAndMutateChecksFailed);
+    this.metrics.checkAndMutateChecksPassed.set(checkAndMutateChecksPassed);
     this.metrics.compactionQueueSize.set(compactSplitThread
         .getCompactionQueueSize());
     this.metrics.flushQueueSize.set(cacheFlusher

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java?rev=1387746&r1=1387745&r2=1387746&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java Wed Sep 19 20:40:22 2012
@@ -161,6 +161,17 @@ public class RegionServerMetrics impleme
       new MetricsLongValue("writeRequestsCount", registry);
 
   /**
+   * Count of checkAndMutates the failed the check
+   */
+  public final MetricsLongValue  checkAndMutateChecksFailed =
+    new MetricsLongValue("checkAndMutateChecksFailed", registry);
+
+  /**
+   * Count of checkAndMutates that passed the check
+   */
+  public final MetricsLongValue checkAndMutateChecksPassed =
+    new MetricsLongValue("checkAndMutateChecksPassed", registry);
+  /**
    */
   public final MetricsIntValue storefileIndexSizeMB =
     new MetricsIntValue("storefileIndexSizeMB", registry);

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java?rev=1387746&r1=1387745&r2=1387746&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java Wed Sep 19 20:40:22 2012
@@ -40,6 +40,7 @@ import org.apache.hadoop.hbase.client.Pu
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
 import org.apache.hadoop.hbase.regionserver.metrics.RegionMetricsStorage;
+import org.apache.hadoop.hbase.regionserver.metrics.RegionServerMetrics;
 import org.apache.hadoop.hbase.regionserver.metrics.SchemaMetrics;
 import org.apache.hadoop.hbase.regionserver.metrics.SchemaMetrics.
     StoreMetricType;
@@ -124,7 +125,7 @@ public class TestRegionServerMetrics {
         RegionMetricsStorage.getNumericMetric(storeMetricName)
             - (startValue != null ? startValue : 0));
   }
-  
+
   @Test
   public void testOperationMetrics() throws IOException {
     String cf = "OPCF";
@@ -198,6 +199,55 @@ public class TestRegionServerMetrics {
 
   }
 
+  private void assertCheckAndMutateMetrics(final HRegionServer rs,
+      long expectedPassed, long expectedFailed) {
+    rs.doMetrics();
+    RegionServerMetrics metrics = rs.getMetrics();
+    assertEquals("checkAndMutatePassed metrics incorrect",
+      expectedPassed, metrics.checkAndMutateChecksPassed.get());
+    assertEquals("checkAndMutateFailed metrics incorrect",
+      expectedFailed, metrics.checkAndMutateChecksFailed.get());
+  }
+
+  @Test
+  public void testCheckAndMutateMetrics() throws Exception {
+    final HRegionServer rs =
+      TEST_UTIL.getMiniHBaseCluster().getRegionServer(0);
+    byte [] tableName = Bytes.toBytes("testCheckAndMutateMetrics");
+    byte [] family = Bytes.toBytes("family");
+    byte [] qualifier = Bytes.toBytes("qualifier");
+    byte [] row = Bytes.toBytes("row1");
+    HTable table = TEST_UTIL.createTable(tableName, family);
+    long expectedPassed = 0;
+    long expectedFailed = 0;
+
+    // checkAndPut success
+    Put put = new Put(row);
+    byte [] val1 = Bytes.toBytes("val1");
+    put.add(family, qualifier, val1);
+    table.checkAndPut(row, family, qualifier, null, put);
+    expectedPassed++;
+    assertCheckAndMutateMetrics(rs, expectedPassed, expectedFailed);
+
+    // checkAndPut failure
+    byte [] val2 = Bytes.toBytes("val2");
+    table.checkAndPut(row, family, qualifier, val2, put);
+    expectedFailed++;
+    assertCheckAndMutateMetrics(rs, expectedPassed, expectedFailed);
+
+    // checkAndDelete success
+    Delete delete = new Delete(row);
+    delete.deleteColumn(family, qualifier);
+    table.checkAndDelete(row, family, qualifier, val1, delete);
+    expectedPassed++;
+    assertCheckAndMutateMetrics(rs, expectedPassed, expectedFailed);
+
+    // checkAndDelete failure
+    table.checkAndDelete(row, family, qualifier, val1, delete);
+    expectedFailed++;
+    assertCheckAndMutateMetrics(rs, expectedPassed, expectedFailed);
+  }
+
   @Test
   public void testRemoveRegionMetrics() throws IOException, InterruptedException {
     String cf = "REMOVECF";