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";