You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2011/10/28 08:09:32 UTC

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

Author: stack
Date: Fri Oct 28 06:09:32 2011
New Revision: 1190167

URL: http://svn.apache.org/viewvc?rev=1190167&view=rev
Log:
HBASE-4304 requestsPerSecond counter stuck at 0

Modified:
    hbase/trunk/CHANGES.txt
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/metrics/TestMetricsMBeanBase.java

Modified: hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/trunk/CHANGES.txt?rev=1190167&r1=1190166&r2=1190167&view=diff
==============================================================================
--- hbase/trunk/CHANGES.txt (original)
+++ hbase/trunk/CHANGES.txt Fri Oct 28 06:09:32 2011
@@ -415,6 +415,7 @@ Release 0.92.0 - Unreleased
    HBASE-4300  Start of new-version master fails if old master's znode is
                hanging around
    HBASE-4679  Thrift null mutation error
+   HBASE-4304  requestsPerSecond counter stuck at 0 (Li Pi)
 
   TESTS
    HBASE-4450  test for number of blocks read: to serve as baseline for expected

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java?rev=1190167&r1=1190166&r2=1190167&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/metrics/MetricsRate.java Fri Oct 28 06:09:32 2011
@@ -56,10 +56,14 @@ public class MetricsRate extends Metrics
     value++;
   }
 
-  private synchronized void intervalHeartBeat() {
+  public synchronized void intervalHeartBeat() {
     long now = System.currentTimeMillis();
-    long diff = (now-ts)/1000;
-    if (diff == 0) diff = 1; // sigh this is crap.
+    long diff = (now-ts) / 1000;
+    if (diff < 1){
+        // To make sure our averages aren't skewed by fast repeated calls,
+        // we simply ignore fast repeated calls.
+    	return;
+    }
     this.prevRate = (float)value / diff;
     this.value = 0;
     this.ts = now;

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1190167&r1=1190166&r2=1190167&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Fri Oct 28 06:09:32 2011
@@ -1018,7 +1018,6 @@ public class HRegionServer implements HR
   /**
    * @param encodedRegionName
    * @return An instance of RegionLoad.
-   * @throws IOException
    */
   public HServerLoad.RegionLoad createRegionLoad(final String encodedRegionName) {
     HRegion r = null;
@@ -1275,6 +1274,7 @@ public class HRegionServer implements HR
   protected void metrics() {
     this.metrics.regions.set(this.onlineRegions.size());
     this.metrics.incrementRequests(this.requestCount.get());
+    this.metrics.requests.intervalHeartBeat();
     // Is this too expensive every three seconds getting a lock on onlineRegions
     // and then per store carried? Can I make metrics be sloppier and avoid
     // the synchronizations?

Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java?rev=1190167&r1=1190166&r2=1190167&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java Fri Oct 28 06:09:32 2011
@@ -116,7 +116,7 @@ public class RegionServerMetrics impleme
   /*
    * Count of requests to the regionservers since last call to metrics update
    */
-  private final MetricsRate requests = new MetricsRate("requests", registry);
+  public final MetricsRate requests = new MetricsRate("requests", registry);
 
   /**
    * Count of stores open on the regionserver.

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/metrics/TestMetricsMBeanBase.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/metrics/TestMetricsMBeanBase.java?rev=1190167&r1=1190166&r2=1190167&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/metrics/TestMetricsMBeanBase.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/metrics/TestMetricsMBeanBase.java Fri Oct 28 06:09:32 2011
@@ -70,6 +70,7 @@ public class TestMetricsMBeanBase extend
 
   public void testGetAttribute() throws Exception {
     this.metricsRate.inc(2);
+    Thread.sleep(1000);
     this.metricsRate.pushMetric(this.metricsRecord);
     this.intValue.set(5);
     this.intValue.pushMetric(this.metricsRecord);
@@ -78,7 +79,7 @@ public class TestMetricsMBeanBase extend
     this.varyRate.pushMetric(this.metricsRecord);
 
 
-    assertEquals( 2.0, (Float)this.stats.getAttribute("metricsRate"), 0.001 );
+    assertEquals( 2.0, (Float)this.stats.getAttribute("metricsRate"), 0.005 );
     assertEquals( 5, this.stats.getAttribute("intValue") );
     assertEquals( 10L, this.stats.getAttribute("varyRateMinTime") );
     assertEquals( 50L, this.stats.getAttribute("varyRateMaxTime") );