You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2008/11/24 22:49:25 UTC

svn commit: r720302 - in /hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver: HRegionServer.java metrics/RegionServerMetrics.java

Author: apurtell
Date: Mon Nov 24 13:49:25 2008
New Revision: 720302

URL: http://svn.apache.org/viewvc?rev=720302&view=rev
Log:
HBASE-1022 Add storefile index size to hbase metrics; add store count also

Modified:
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=720302&r1=720301&r2=720302&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Mon Nov 24 13:49:25 2008
@@ -652,21 +652,33 @@
     // 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?
+    int stores = 0;
     int storefiles = 0;
     long memcacheSize = 0;
+    long storefileIndexSize = 0;
     synchronized (this.onlineRegions) {
       for (Map.Entry<Integer, HRegion> e: this.onlineRegions.entrySet()) {
         HRegion r = e.getValue();
         memcacheSize += r.memcacheSize.get();
         synchronized(r.stores) {
+          stores += r.stores.size();
           for(Map.Entry<Integer, HStore> ee: r.stores.entrySet()) {
-            storefiles += ee.getValue().getStorefilesCount();
+            HStore store = ee.getValue(); 
+            storefiles += store.getStorefilesCount();
+            try {
+              storefileIndexSize += store.getStorefilesIndexSize();
+            } catch (IOException ex) {
+              LOG.warn("error getting store file index size for " + store +
+                ": " + StringUtils.stringifyException(ex));  
+            }
           }
         }
       }
     }
+    this.metrics.stores.set(stores);
     this.metrics.storefiles.set(storefiles);
     this.metrics.memcacheSizeMB.set((int)(memcacheSize/(1024*1024)));
+    this.metrics.storefileIndexSizeMB.set((int)(storefileIndexSize/(1024*1024)));
   }
 
   /**

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java?rev=720302&r1=720301&r2=720302&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/metrics/RegionServerMetrics.java Mon Nov 24 13:49:25 2008
@@ -48,7 +48,12 @@
    * Count of requests to the regionservers since last call to metrics update
    */
   private final MetricsIntValue requests = new MetricsIntValue("requests");
-  
+
+  /**
+   * Count of stores open on the regionserver.
+   */
+  public final MetricsIntValue stores = new MetricsIntValue("stores");
+
   /**
    * Count of storefiles open on the regionserver.
    */
@@ -86,6 +91,7 @@
    */
   public void doUpdates(@SuppressWarnings("unused") MetricsContext unused) {
     synchronized (this) {
+      this.stores.pushMetric(this.metricsRecord);
       this.storefiles.pushMetric(this.metricsRecord);
       this.storefileIndexSizeMB.pushMetric(this.metricsRecord);
       this.memcacheSizeMB.pushMetric(this.metricsRecord);
@@ -131,6 +137,8 @@
     sb.append(this.requests.get()/seconds);
     sb.append(", regions=");
     sb.append(this.regions.get());
+    sb.append(", stores=");
+    sb.append(this.stores.get());
     sb.append(", storefiles=");
     sb.append(this.storefiles.get());
     sb.append(", storefileIndexSize=");