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