You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2012/10/04 10:41:25 UTC

svn commit: r1393955 - in /hbase/branches/0.89-fb/src: main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java

Author: mbautin
Date: Thu Oct  4 08:41:25 2012
New Revision: 1393955

URL: http://svn.apache.org/viewvc?rev=1393955&view=rev
Log:
[jira] [HBASE-6872] [89-fb] Fix TestRegionServerMetrics.testNumReadsAndWrites

Author: mbautin

Summary: rHBASEEIGHTNINEFBBRANCH1389841 introduced an unstable test in TestRegionServerMetrics: testNumReadsAndWrites. Read and write counters should be reset to zero before starting the test.

Test Plan: Run TestRegionServerMetrics

Reviewers: kannan, kranganathan, liyintang

Reviewed By: liyintang

CC: adela, Liyin, aaiyer, avf

Differential Revision: https://reviews.facebook.net/D5853

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1393955&r1=1393954&r2=1393955&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Thu Oct  4 08:41:25 2012
@@ -645,8 +645,6 @@ public class HRegionServer implements HR
             }
             // XXX add a field in serverInfo to report to fsOK to master?
             this.serverInfo.setLoad(hsl);
-            numReads.set(0);
-            numWrites.set(0);
             addOutboundMsgs(outboundMessages);
             HMsg msgs[] = this.hbaseMaster.regionServerReport(
               serverInfo, outboundMessages.toArray(EMPTY_HMSG_ARRAY),
@@ -1300,7 +1298,10 @@ public class HRegionServer implements HR
 
   protected void metrics() {
     int numReads = this.numReads.get();
+    this.numReads.addAndGet(-numReads);
+
     int numWrites = this.numWrites.get();
+    this.numWrites.addAndGet(-numWrites);
 
     this.metrics.regions.set(this.onlineRegions.size());
     this.metrics.incrementRequests(numReads + numWrites);

Modified: hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java?rev=1393955&r1=1393954&r2=1393955&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java (original)
+++ hbase/branches/0.89-fb/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java Thu Oct  4 08:41:25 2012
@@ -21,7 +21,6 @@ package org.apache.hadoop.hbase.regionse
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Map;
 
@@ -30,13 +29,11 @@ import org.apache.commons.logging.LogFac
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HTable;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.regionserver.metrics.SchemaMetrics;
-import org.apache.hadoop.hbase.regionserver.metrics.SchemaMetrics.
-    StoreMetricType;
+import org.apache.hadoop.hbase.regionserver.metrics.SchemaMetrics.StoreMetricType;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.junit.After;
 import org.junit.Assert;
@@ -136,7 +133,7 @@ public class TestRegionServerMetrics {
     // we have getsize & nextsize for each column family
     assertEquals(cfs.length * 2, metrics.length);
 
-    for (int i =0; i < cfs.length; ++i) {
+    for (int i = 0; i < cfs.length; ++i) {
       String prefix = SchemaMetrics.generateSchemaMetricsPrefix(table, cfs[i]);
       String getMetric = prefix + HRegion.METRIC_GETSIZE;
       String nextMetric = prefix + HRegion.METRIC_NEXTSIZE;
@@ -152,6 +149,7 @@ public class TestRegionServerMetrics {
     }
   }
 
+  @SuppressWarnings("unused")
   @Test
   public void testGetNextSize() throws IOException, InterruptedException {
     String rowName = "row1";
@@ -166,7 +164,6 @@ public class TestRegionServerMetrics {
 
     long ts = 1234;
     HTable hTable = TEST_UTIL.createTable(TABLE, new byte[][]{CF1, CF2});
-    HBaseAdmin admin = new HBaseAdmin(TEST_UTIL.getConfiguration());
 
     Put p = new Put(ROW);
     p.add(CF1, CF1, ts, CF1);
@@ -189,12 +186,14 @@ public class TestRegionServerMetrics {
     // only cf2.nextsize is set
     for (Result res : hTable.getScanner(CF2)) {
     }
+
     assertSizeMetric(tableName, cfs,
         new int[] {kvLength, kvLength, 0, kvLength});
 
     // only cf2.nextsize is set
     for (Result res : hTable.getScanner(CF1)) {
     }
+
     assertSizeMetric(tableName, cfs,
         new int[] {kvLength, kvLength, kvLength, kvLength});
 
@@ -215,12 +214,16 @@ public class TestRegionServerMetrics {
         MAX_VERSIONS, NUM_COLS_PER_ROW, NUM_FLUSHES, NUM_REGIONS, 1000);
     final HRegionServer rs =
         TEST_UTIL.getMiniHBaseCluster().getRegionServer(0);
-    rs.doMetrics();
+
+    // This may not be necessary since we verify the number of reads and writes from atomic
+    // variables and not from collected metrics.
+    rs.doMetrics(); 
+    
     for (HRegion r : rs.getOnlineRegions()) {
       Get g = new Get(new byte[]{});
       rs.get(r.getRegionName(), g);
     }
     Assert.assertEquals(rs.getOnlineRegions().size(), rs.getNumReads().get());
-    Assert.assertEquals(rs.getNumWrites().get(), 0);
+    Assert.assertEquals(0, rs.getNumWrites().get());
   }
 }