commit 5c69be07e4f0d7e09bf09447f22200e4f782ecac Author: Todd Lipcon Date: Sat Jan 15 19:10:18 2011 -0800 Add metric for flush queue length diff --git src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 8246c0c..986f135 100644 --- src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -1173,6 +1173,8 @@ public class HRegionServer implements HRegionInterface, HBaseRPCErrorHandler, .set((int) (storefileIndexSize / (1024 * 1024))); this.metrics.compactionQueueSize.set(compactSplitThread .getCompactionQueueSize()); + this.metrics.flushQueueSize.set(cacheFlusher + .getFlushQueueSize()); LruBlockCache lruBlockCache = (LruBlockCache) StoreFile.getBlockCache(conf); if (lruBlockCache != null) { diff --git src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java index 2a9e564..57f4d2c 100644 --- src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java +++ src/main/java/org/apache/hadoop/hbase/regionserver/MemStoreFlusher.java @@ -263,6 +263,10 @@ class MemStoreFlusher extends Thread implements FlushRequester { } } + public int getFlushQueueSize() { + return flushQueue.size(); + } + /** * Only interrupt once it's done with a run through the work loop. */ diff --git src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java index 8b0b43f..8e79aca 100644 --- src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java +++ src/main/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java @@ -144,6 +144,12 @@ public class RegionServerMetrics implements Updater { */ public final MetricsIntValue compactionQueueSize = new MetricsIntValue("compactionQueueSize", registry); + + /** + * Size of the flush queue. + */ + public final MetricsIntValue flushQueueSize = + new MetricsIntValue("flushQueueSize", registry); /** * filesystem read latency @@ -240,6 +246,7 @@ public class RegionServerMetrics implements Updater { this.regions.pushMetric(this.metricsRecord); this.requests.pushMetric(this.metricsRecord); this.compactionQueueSize.pushMetric(this.metricsRecord); + this.flushQueueSize.pushMetric(this.metricsRecord); this.blockCacheSize.pushMetric(this.metricsRecord); this.blockCacheFree.pushMetric(this.metricsRecord); this.blockCacheCount.pushMetric(this.metricsRecord); @@ -340,6 +347,8 @@ public class RegionServerMetrics implements Updater { Integer.valueOf(this.memstoreSizeMB.get())); sb = Strings.appendKeyValue(sb, "compactionQueueSize", Integer.valueOf(this.compactionQueueSize.get())); + sb = Strings.appendKeyValue(sb, "flushQueueSize", + Integer.valueOf(this.flushQueueSize.get())); // Duplicate from jvmmetrics because metrics are private there so // inaccessible. MemoryUsage memory =