hbase-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From apurt...@apache.org
Subject svn commit: r794902 - in /hadoop/hbase/trunk: ./ src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/ src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/model/ src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protob...
Date Thu, 16 Jul 2009 23:13:41 GMT
Author: apurtell
Date: Thu Jul 16 23:13:41 2009
New Revision: 794902

URL: http://svn.apache.org/viewvc?rev=794902&view=rev
Log:
HBASE-1665 expose more load information to the client side

Modified:
    hadoop/hbase/trunk/CHANGES.txt
    hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/StorageClusterStatusResource.java
    hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/model/StorageClusterStatusModel.java
    hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/StorageClusterStatusMessage.proto
    hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/generated/StorageClusterStatusMessage.java
    hadoop/hbase/trunk/src/contrib/stargate/src/test/org/apache/hadoop/hbase/stargate/model/TestStorageClusterStatusModel.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HServerLoad.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/ipc/HBaseRPCProtocolVersion.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
    hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java

Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Thu Jul 16 23:13:41 2009
@@ -102,8 +102,8 @@
    HBASE-1292  php thrift's getRow() would throw an exception if the row does
                not exist (Rong-en Fan via Stack)
    HBASE-1340  Fix new javadoc warnings (Evgeny Ryabitskiy via Stack)
-   HBASE-1287  Partitioner class not used in TableMapReduceUtil.initTableReduceJob()
-               (Lars George and Billy Pearson via Stack)
+   HBASE-1287  Partitioner class not used in TableMapReduceUtil
+               .initTableReduceJob() (Lars George and Billy Pearson via Stack)
    HBASE-1320  hbase-1234 broke filter tests
    HBASE-1355  [performance] Cache family maxversions; we were calculating on
                each access
@@ -238,16 +238,17 @@
    HBASE-1437  broken links in hbase.org
    HBASE-1582  Translate ColumnValueFilter and RowFilterSet to the new Filter
                interface
-   HBASE-1594  Fix scan addcolumns after hbase-1385 commit (broken hudson build)
+   HBASE-1594  Fix scan addcolumns after hbase-1385 commit (broke hudson build)
    HBASE-1595  hadoop-default.xml and zoo.cfg in hbase jar
    HBASE-1602  HRegionServer won't go down since we added in new LruBlockCache
    HBASE-1608  TestCachedBlockQueue failing on some jvms (Jon Gray via Stack)
    HBASE-1615  HBASE-1597 introduced a bug when compacting after a split
                (Jon Gray via Stack)
-   HBASE-1616  Unit test of compacting referenced StoreFiles (Jon Gray via Stack)
+   HBASE-1616  Unit test of compacting referenced StoreFiles (Jon Gray via
+               Stack)
    HBASE-1618  Investigate further into the MemStoreFlusher StoreFile limit
                (Jon Gray via Stack)
-   HBASE-1625  Adding check to Put.add(KeyValue kv), to see that it has the same
+   HBASE-1625  Adding check to Put.add(KeyValue), to see that it has the same
                row as when instantiated (Erik Holstad via Stack)
    HBASE-1629  HRS unable to contact master
    HBASE-1633  Can't delete in TRUNK shell; makes it hard doing admin repairs
@@ -453,7 +454,8 @@
                (Erik Holstad via Stack)
    HBASE-1584  Put add methods should return this for ease of use (Be
                consistant with Get) (Clint Morgan via Stack)
-   HBASE-1581  Run major compaction on .META. when table is dropped or truncated
+   HBASE-1581  Run major compaction on .META. when table is dropped or
+               truncated
    HBASE-1587  Update ganglia config and doc to account for ganglia 3.1 and
                hadoop-4675
    HBASE-1589  Up zk maxClientCnxns from default of 10 to 20 or 30 or so
@@ -469,23 +471,25 @@
    HBASE-1218  Implement in-memory column (Jon Gray via Stack)
    HBASE-1606  Remove zoo.cfg, put config options into hbase-site.xml
    HBASE-1575  HMaster does not handle ZK session expiration
-   HBASE-1620  Need to use special StoreScanner constructor for major compactions
-               (passed sf, no caching, etc) (Jon Gray via Stack)
+   HBASE-1620  Need to use special StoreScanner constructor for major
+               compactions (passed sf, no caching, etc) (Jon Gray via Stack)
    HBASE-1624  Don't sort Puts if only one in list in HCM#processBatchOfRows
    HBASE-1626  Allow emitting Deletes out of new TableReducer
                (Lars George via Stack)
    HBASE-1551  HBase should manage multiple node ZooKeeper quorum
    HBASE-1637  Delete client class methods should return itself like Put, Get,
                Scan (Jon Gray via Nitay)
-   HBASE-1640  Allow passing arguments to jruby script run when run by bin/hbase shell
+   HBASE-1640  Allow passing arguments to jruby script run when run by hbase
+               shell
    HBASE-698   HLog recovery is not performed after master failure
    HBASE-1643  ScanDeleteTracker takes comparator but it unused
    HBASE-1603  MR failed "RetriesExhaustedException: Trying to contact region
                server Some server for region TestTable..." -- deubugging
    HBASE-1470  hbase and HADOOP-4379, dhruba's flush/sync
-   HBASE-1632  Write documentation for configuring/managing ZooKeeper with HBase
+   HBASE-1632  Write documentation for configuring/managing ZooKeeper
    HBASE-1662  Tool to run major compaction on catalog regions when hbase is
                shutdown
+   HBASE-1665  expose more load information to the client side
 
   OPTIMIZATIONS
    HBASE-1412  Change values for delete column and column family in KeyValue

Modified: hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/StorageClusterStatusResource.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/StorageClusterStatusResource.java?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/StorageClusterStatusResource.java (original)
+++ hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/StorageClusterStatusResource.java Thu Jul 16 23:13:41 2009
@@ -70,15 +70,18 @@
       model.setRequests(status.getRequestsCount());
       model.setAverageLoad(status.getAverageLoad());
       for (HServerInfo info: status.getServerInfo()) {
+        HServerLoad load = info.getLoad();
         StorageClusterStatusModel.Node node = 
           model.addLiveNode(
             info.getServerAddress().getHostname() + ":" + 
             Integer.toString(info.getServerAddress().getPort()),
-            info.getStartCode());
-        HServerLoad load = info.getLoad();
+            info.getStartCode(), load.getUsedHeapMB(),
+            load.getMaxHeapMB());
         node.setRequests(load.getNumberOfRequests());
         for (HServerLoad.RegionLoad region: load.getRegionsLoad()) {
-          node.addRegion(region.getName());
+          node.addRegion(region.getName(), region.getStores(),
+            region.getStorefiles(), region.getStorefileSizeMB(),
+            region.getMemStoreSizeMB(), region.getStorefileIndexSizeMB());
         }
       }
       for (String name: status.getDeadServerNames()) {

Modified: hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/model/StorageClusterStatusModel.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/model/StorageClusterStatusModel.java?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/model/StorageClusterStatusModel.java (original)
+++ hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/model/StorageClusterStatusModel.java Thu Jul 16 23:13:41 2009
@@ -71,10 +71,17 @@
  *   <attribute name="name" type="string"></attribute>
  *   <attribute name="startCode" type="int"></attribute>
  *   <attribute name="requests" type="int"></attribute>
+ *   <attribute name="heapSizeMB" type="int"></attribute>
+ *   <attribute name="maxHeapSizeMB" type="int"></attribute>
  * </complexType>
  *
  * <complexType name="Region">
  *   <attribute name="name" type="base64Binary"></attribute>
+ *   <attribute name="stores" type="int"></attribute>
+ *   <attribute name="storefiles" type="int"></attribute>
+ *   <attribute name="storefileSizeMB" type="int"></attribute>
+ *   <attribute name="memstoreSizeMB" type="int"></attribute>
+ *   <attribute name="storefileIndexSizeMB" type="int"></attribute>
  * </complexType>
  * </pre>
  */
@@ -93,6 +100,11 @@
 	   */
 	  public static class Region {
 	    private byte[] name;
+	    private int stores;
+	    private int storefiles;
+	    private int storefileSizeMB;
+	    private int memstoreSizeMB;
+	    private int storefileIndexSizeMB;
 
 	    /**
 	     * Default constructor
@@ -108,6 +120,25 @@
 	    }
 
 	    /**
+	     * Constructor
+	     * @param name the region name
+	     * @param stores the number of stores
+	     * @param storefiles the number of store files
+	     * @param storefileSizeMB total size of store files, in MB
+	     * @param memstoreSizeMB total size of memstore, in MB
+	     * @param storefileIndexSizeMB, total size of store file indexes, in MB
+	     */
+	    public Region(byte[] name, int stores, int storefiles,
+          int storefileSizeMB, int memstoreSizeMB, int storefileIndexSizeMB) {
+        this.name = name;
+        this.stores = stores;
+        this.storefiles = storefiles;
+        this.storefileSizeMB = storefileSizeMB;
+        this.memstoreSizeMB = memstoreSizeMB;
+        this.storefileIndexSizeMB = storefileIndexSizeMB;
+      }
+
+      /**
 	     * @return the region name
 	     */
 	    @XmlAttribute
@@ -116,24 +147,103 @@
 	    }
 
 	    /**
+	     * @return the number of stores 
+	     */
+	    @XmlAttribute
+	    public int getStores() {
+        return stores;
+      }
+
+      /**
+       * @return the number of store files 
+       */
+      @XmlAttribute
+      public int getStorefiles() {
+        return storefiles;
+      }
+
+      /**
+       * @return the total size of store files, in MB
+       */
+      @XmlAttribute
+      public int getStorefileSizeMB() {
+        return storefileSizeMB;
+      }
+
+      /**
+       * @return memstore size, in MB
+       */
+      @XmlAttribute
+      public int getMemstoreSizeMB() {
+        return memstoreSizeMB;
+      }
+
+      /**
+       * @return the total size of store file indexes, in MB
+       */
+      @XmlAttribute
+      public int getStorefileIndexSizeMB() {
+        return storefileIndexSizeMB;
+      }
+
+      /**
 	     * @param name the region name
 	     */
 	    public void setName(byte[] name) {
 	      this.name = name;
 	    }
+
+	    /**
+	     * @param stores the number of stores
+	     */
+      public void setStores(int stores) {
+        this.stores = stores;
+      }
+
+      /**
+       * @param storefiles the number of store files
+       */
+      public void setStorefiles(int storefiles) {
+        this.storefiles = storefiles;
+      }
+
+      /**
+       * @param storefileSizeMB total size of store files, in MB
+       */
+      public void setStorefileSizeMB(int storefileSizeMB) {
+        this.storefileSizeMB = storefileSizeMB;
+      }
+
+      /**
+       * @param memstoreSizeMB memstore size, in MB
+       */
+      public void setMemstoreSizeMB(int memstoreSizeMB) {
+        this.memstoreSizeMB = memstoreSizeMB;
+      }
+
+      /**
+       * @param storefileIndexSizeMB total size of store file indexes, in MB
+       */
+      public void setStorefileIndexSizeMB(int storefileIndexSizeMB) {
+        this.storefileIndexSizeMB = storefileIndexSizeMB;
+      }
 	  }
 
 	  private String name;
     private long startCode;
     private int requests;
+    private int heapSizeMB;
+    private int maxHeapSizeMB;
     private List<Region> regions = new ArrayList<Region>();
 
     /**
      * Add a region name to the list
      * @param name the region name
      */
-    public void addRegion(byte[] name) {
-      regions.add(new Region(name));
+    public void addRegion(byte[] name, int stores, int storefiles,
+        int storefileSizeMB, int memstoreSizeMB, int storefileIndexSizeMB) {
+      regions.add(new Region(name, stores, storefiles, storefileSizeMB,
+        memstoreSizeMB, storefileIndexSizeMB));
     }
 
     /**
@@ -176,6 +286,22 @@
     }
 
     /**
+     * @return the current heap size, in MB
+     */
+    @XmlAttribute
+    public int getHeapSizeMB() {
+      return heapSizeMB;
+    }
+
+    /**
+     * @return the maximum heap size, in MB
+     */
+    @XmlAttribute
+    public int getMaxHeapSizeMB() {
+      return maxHeapSizeMB;
+    }
+
+    /**
      * @return the list of regions served by the region server
      */
     @XmlElement(name="Region")
@@ -206,6 +332,20 @@
     }
 
     /**
+     * @param heapSizeMB the current heap size, in MB
+     */
+    public void setHeapSizeMB(int heapSizeMB) {
+      this.heapSizeMB = heapSizeMB;
+    }
+
+    /**
+     * @param maxHeapSizeMB the maximum heap size, in MB
+     */
+    public void setMaxHeapSizeMB(int maxHeapSizeMB) {
+      this.maxHeapSizeMB = maxHeapSizeMB;
+    }
+
+    /**
      * @param regions a list of regions served by the region server
      */
     public void setRegions(List<Region> regions) {
@@ -231,9 +371,14 @@
 	 * Add a live node to the cluster representation.
 	 * @param name the region server name
 	 * @param startCode the region server's start code
+	 * @param heapSizeMB the current heap size, in MB
+	 * @param maxHeapSizeMB the maximum heap size, in MB
 	 */
-	public Node addLiveNode(String name, long startCode) {
+	public Node addLiveNode(String name, long startCode, int heapSizeMB,
+	    int maxHeapSizeMB) {
 	  Node node = new Node(name, startCode);
+	  node.setHeapSizeMB(heapSizeMB);
+	  node.setMaxHeapSizeMB(maxHeapSizeMB);
 	  liveNodes.add(node);
 	  return node;
 	}
@@ -367,10 +512,24 @@
         sb.append(node.requests);
         sb.append(", regions=");
         sb.append(node.regions.size());
+        sb.append("\n        heapSizeMB=");
+        sb.append(node.heapSizeMB);
+        sb.append("\n        maxHeapSizeMB=");
+        sb.append(node.maxHeapSizeMB);
         sb.append("\n\n");
         for (Node.Region region: node.regions) {
           sb.append("        ");
           sb.append(Bytes.toString(region.name));
+          sb.append("\n            stores=");
+          sb.append(region.stores);
+          sb.append("\n            storefiless=");
+          sb.append(region.storefiles);
+          sb.append("\n            storefileSizeMB=");
+          sb.append(region.storefileSizeMB);
+          sb.append("\n            memstoreSizeMB=");
+          sb.append(region.memstoreSizeMB);
+          sb.append("\n            storefileIndexSizeMB=");
+          sb.append(region.storefileIndexSizeMB);
           sb.append('\n');
         }
         sb.append('\n');
@@ -401,8 +560,18 @@
       nodeBuilder.setName(node.name);
       nodeBuilder.setStartCode(node.startCode);
       nodeBuilder.setRequests(node.requests);
+      nodeBuilder.setHeapSizeMB(node.heapSizeMB);
+      nodeBuilder.setMaxHeapSizeMB(node.maxHeapSizeMB);
       for (Node.Region region: node.regions) {
-        nodeBuilder.addRegions(ByteString.copyFrom(region.name));
+        StorageClusterStatus.Region.Builder regionBuilder =
+          StorageClusterStatus.Region.newBuilder();
+        regionBuilder.setName(ByteString.copyFrom(region.name));
+        regionBuilder.setStores(region.stores);
+        regionBuilder.setStorefiles(region.storefiles);
+        regionBuilder.setStorefileSizeMB(region.storefileSizeMB);
+        regionBuilder.setMemstoreSizeMB(region.memstoreSizeMB);
+        regionBuilder.setStorefileIndexSizeMB(region.storefileIndexSizeMB);
+        nodeBuilder.addRegions(regionBuilder);
       }
       builder.addLiveNodes(nodeBuilder);
     }
@@ -429,11 +598,18 @@
     for (StorageClusterStatus.Node node: builder.getLiveNodesList()) {
       long startCode = node.hasStartCode() ? node.getStartCode() : -1;
       StorageClusterStatusModel.Node nodeModel = 
-        addLiveNode(node.getName(), startCode);
+        addLiveNode(node.getName(), startCode, node.getHeapSizeMB(),
+          node.getMaxHeapSizeMB());
       int requests = node.hasRequests() ? node.getRequests() : 0;
       nodeModel.setRequests(requests);
-      for (ByteString region: node.getRegionsList()) {
-        nodeModel.addRegion(region.toByteArray());
+      for (StorageClusterStatus.Region region: node.getRegionsList()) {
+        nodeModel.addRegion(
+          region.getName().toByteArray(),
+          region.getStores(),
+          region.getStorefiles(),
+          region.getStorefileSizeMB(),
+          region.getMemstoreSizeMB(),
+          region.getStorefileIndexSizeMB());
       }
     }
     for (String node: builder.getDeadNodesList()) {

Modified: hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/StorageClusterStatusMessage.proto
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/StorageClusterStatusMessage.proto?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/StorageClusterStatusMessage.proto (original)
+++ hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/StorageClusterStatusMessage.proto Thu Jul 16 23:13:41 2009
@@ -19,11 +19,21 @@
 package org.apache.hadoop.hbase.stargate.protobuf.generated;
 
 message StorageClusterStatus {
+  message Region {
+    required bytes name = 1;
+    optional int32 stores = 2;
+    optional int32 storefiles = 3;
+    optional int32 storefileSizeMB = 4;
+    optional int32 memstoreSizeMB = 5;
+    optional int32 storefileIndexSizeMB = 6;
+  }
   message Node {
     required string name = 1;    // name:port
-    optional int64 startCode = 4;
-    optional int32 requests = 2;
-    repeated bytes regions = 3;
+    optional int64 startCode = 2;
+    optional int32 requests = 3;
+    optional int32 heapSizeMB = 4;
+    optional int32 maxHeapSizeMB = 5;
+    repeated Region regions = 6;
   }
   // node status
   repeated Node liveNodes = 1;

Modified: hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/generated/StorageClusterStatusMessage.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/generated/StorageClusterStatusMessage.java?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/generated/StorageClusterStatusMessage.java (original)
+++ hadoop/hbase/trunk/src/contrib/stargate/src/java/org/apache/hadoop/hbase/stargate/protobuf/generated/StorageClusterStatusMessage.java Thu Jul 16 23:13:41 2009
@@ -32,6 +32,473 @@
       return org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_fieldAccessorTable;
     }
     
+    public static final class Region extends
+        com.google.protobuf.GeneratedMessage {
+      // Use Region.newBuilder() to construct.
+      private Region() {}
+      
+      private static final Region defaultInstance = new Region();
+      public static Region getDefaultInstance() {
+        return defaultInstance;
+      }
+      
+      public Region getDefaultInstanceForType() {
+        return defaultInstance;
+      }
+      
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Region_descriptor;
+      }
+      
+      @Override
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Region_fieldAccessorTable;
+      }
+      
+      // required bytes name = 1;
+      public static final int NAME_FIELD_NUMBER = 1;
+      private boolean hasName;
+      private com.google.protobuf.ByteString name_ = com.google.protobuf.ByteString.EMPTY;
+      public boolean hasName() { return hasName; }
+      public com.google.protobuf.ByteString getName() { return name_; }
+      
+      // optional int32 stores = 2;
+      public static final int STORES_FIELD_NUMBER = 2;
+      private boolean hasStores;
+      private int stores_ = 0;
+      public boolean hasStores() { return hasStores; }
+      public int getStores() { return stores_; }
+      
+      // optional int32 storefiles = 3;
+      public static final int STOREFILES_FIELD_NUMBER = 3;
+      private boolean hasStorefiles;
+      private int storefiles_ = 0;
+      public boolean hasStorefiles() { return hasStorefiles; }
+      public int getStorefiles() { return storefiles_; }
+      
+      // optional int32 storefileSizeMB = 4;
+      public static final int STOREFILESIZEMB_FIELD_NUMBER = 4;
+      private boolean hasStorefileSizeMB;
+      private int storefileSizeMB_ = 0;
+      public boolean hasStorefileSizeMB() { return hasStorefileSizeMB; }
+      public int getStorefileSizeMB() { return storefileSizeMB_; }
+      
+      // optional int32 memstoreSizeMB = 5;
+      public static final int MEMSTORESIZEMB_FIELD_NUMBER = 5;
+      private boolean hasMemstoreSizeMB;
+      private int memstoreSizeMB_ = 0;
+      public boolean hasMemstoreSizeMB() { return hasMemstoreSizeMB; }
+      public int getMemstoreSizeMB() { return memstoreSizeMB_; }
+      
+      // optional int32 storefileIndexSizeMB = 6;
+      public static final int STOREFILEINDEXSIZEMB_FIELD_NUMBER = 6;
+      private boolean hasStorefileIndexSizeMB;
+      private int storefileIndexSizeMB_ = 0;
+      public boolean hasStorefileIndexSizeMB() { return hasStorefileIndexSizeMB; }
+      public int getStorefileIndexSizeMB() { return storefileIndexSizeMB_; }
+      
+      @Override
+      public final boolean isInitialized() {
+        if (!hasName) return false;
+        return true;
+      }
+      
+      @Override
+      public void writeTo(com.google.protobuf.CodedOutputStream output)
+                          throws java.io.IOException {
+        if (hasName()) {
+          output.writeBytes(1, getName());
+        }
+        if (hasStores()) {
+          output.writeInt32(2, getStores());
+        }
+        if (hasStorefiles()) {
+          output.writeInt32(3, getStorefiles());
+        }
+        if (hasStorefileSizeMB()) {
+          output.writeInt32(4, getStorefileSizeMB());
+        }
+        if (hasMemstoreSizeMB()) {
+          output.writeInt32(5, getMemstoreSizeMB());
+        }
+        if (hasStorefileIndexSizeMB()) {
+          output.writeInt32(6, getStorefileIndexSizeMB());
+        }
+        getUnknownFields().writeTo(output);
+      }
+      
+      private int memoizedSerializedSize = -1;
+      @Override
+      public int getSerializedSize() {
+        int size = memoizedSerializedSize;
+        if (size != -1) return size;
+      
+        size = 0;
+        if (hasName()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeBytesSize(1, getName());
+        }
+        if (hasStores()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(2, getStores());
+        }
+        if (hasStorefiles()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(3, getStorefiles());
+        }
+        if (hasStorefileSizeMB()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(4, getStorefileSizeMB());
+        }
+        if (hasMemstoreSizeMB()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(5, getMemstoreSizeMB());
+        }
+        if (hasStorefileIndexSizeMB()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(6, getStorefileIndexSizeMB());
+        }
+        size += getUnknownFields().getSerializedSize();
+        memoizedSerializedSize = size;
+        return size;
+      }
+      
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseFrom(
+          com.google.protobuf.ByteString data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return newBuilder().mergeFrom(data).buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseFrom(
+          com.google.protobuf.ByteString data,
+          com.google.protobuf.ExtensionRegistry extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return newBuilder().mergeFrom(data, extensionRegistry)
+                 .buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseFrom(byte[] data)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return newBuilder().mergeFrom(data).buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseFrom(
+          byte[] data,
+          com.google.protobuf.ExtensionRegistry extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return newBuilder().mergeFrom(data, extensionRegistry)
+                 .buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return newBuilder().mergeFrom(input).buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistry extensionRegistry)
+          throws java.io.IOException {
+        return newBuilder().mergeFrom(input, extensionRegistry)
+                 .buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseDelimitedFrom(java.io.InputStream input)
+          throws java.io.IOException {
+        return newBuilder().mergeDelimitedFrom(input).buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseDelimitedFrom(
+          java.io.InputStream input,
+          com.google.protobuf.ExtensionRegistry extensionRegistry)
+          throws java.io.IOException {
+        return newBuilder().mergeDelimitedFrom(input, extensionRegistry)
+                 .buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseFrom(
+          com.google.protobuf.CodedInputStream input)
+          throws java.io.IOException {
+        return newBuilder().mergeFrom(input).buildParsed();
+      }
+      public static org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region parseFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistry extensionRegistry)
+          throws java.io.IOException {
+        return newBuilder().mergeFrom(input, extensionRegistry)
+                 .buildParsed();
+      }
+      
+      public static Builder newBuilder() { return new Builder(); }
+      public Builder newBuilderForType() { return new Builder(); }
+      public static Builder newBuilder(org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region prototype) {
+        return new Builder().mergeFrom(prototype);
+      }
+      public Builder toBuilder() { return newBuilder(this); }
+      
+      public static final class Builder extends
+          com.google.protobuf.GeneratedMessage.Builder<Builder> {
+        // Construct using org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.newBuilder()
+        private Builder() {}
+        
+        org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region result = new org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region();
+        
+        @Override
+        protected org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region internalGetResult() {
+          return result;
+        }
+        
+        @Override
+        public Builder clear() {
+          result = new org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region();
+          return this;
+        }
+        
+        @Override
+        public Builder clone() {
+          return new Builder().mergeFrom(result);
+        }
+        
+        @Override
+        public com.google.protobuf.Descriptors.Descriptor
+            getDescriptorForType() {
+          return org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.getDescriptor();
+        }
+        
+        public org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region getDefaultInstanceForType() {
+          return org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.getDefaultInstance();
+        }
+        
+        public org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region build() {
+          if (result != null && !isInitialized()) {
+            throw new com.google.protobuf.UninitializedMessageException(
+              result);
+          }
+          return buildPartial();
+        }
+        
+        private org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region buildParsed()
+            throws com.google.protobuf.InvalidProtocolBufferException {
+          if (!isInitialized()) {
+            throw new com.google.protobuf.UninitializedMessageException(
+              result).asInvalidProtocolBufferException();
+          }
+          return buildPartial();
+        }
+        
+        public org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region buildPartial() {
+          if (result == null) {
+            throw new IllegalStateException(
+              "build() has already been called on this Builder.");  }
+          org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region returnMe = result;
+          result = null;
+          return returnMe;
+        }
+        
+        @Override
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other instanceof org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region) {
+            return mergeFrom((org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region)other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+        
+        public Builder mergeFrom(org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region other) {
+          if (other == org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.getDefaultInstance()) return this;
+          if (other.hasName()) {
+            setName(other.getName());
+          }
+          if (other.hasStores()) {
+            setStores(other.getStores());
+          }
+          if (other.hasStorefiles()) {
+            setStorefiles(other.getStorefiles());
+          }
+          if (other.hasStorefileSizeMB()) {
+            setStorefileSizeMB(other.getStorefileSizeMB());
+          }
+          if (other.hasMemstoreSizeMB()) {
+            setMemstoreSizeMB(other.getMemstoreSizeMB());
+          }
+          if (other.hasStorefileIndexSizeMB()) {
+            setStorefileIndexSizeMB(other.getStorefileIndexSizeMB());
+          }
+          this.mergeUnknownFields(other.getUnknownFields());
+          return this;
+        }
+        
+        @Override
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input)
+            throws java.io.IOException {
+          return mergeFrom(input,
+            com.google.protobuf.ExtensionRegistry.getEmptyRegistry());
+        }
+        
+        @Override
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistry extensionRegistry)
+            throws java.io.IOException {
+          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder(
+              this.getUnknownFields());
+          while (true) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                this.setUnknownFields(unknownFields.build());
+                return this;
+              default: {
+                if (!parseUnknownField(input, unknownFields,
+                                       extensionRegistry, tag)) {
+                  this.setUnknownFields(unknownFields.build());
+                  return this;
+                }
+                break;
+              }
+              case 10: {
+                setName(input.readBytes());
+                break;
+              }
+              case 16: {
+                setStores(input.readInt32());
+                break;
+              }
+              case 24: {
+                setStorefiles(input.readInt32());
+                break;
+              }
+              case 32: {
+                setStorefileSizeMB(input.readInt32());
+                break;
+              }
+              case 40: {
+                setMemstoreSizeMB(input.readInt32());
+                break;
+              }
+              case 48: {
+                setStorefileIndexSizeMB(input.readInt32());
+                break;
+              }
+            }
+          }
+        }
+        
+        
+        // required bytes name = 1;
+        public boolean hasName() {
+          return result.hasName();
+        }
+        public com.google.protobuf.ByteString getName() {
+          return result.getName();
+        }
+        public Builder setName(com.google.protobuf.ByteString value) {
+          if (value == null) {
+    throw new NullPointerException();
+  }
+  result.hasName = true;
+          result.name_ = value;
+          return this;
+        }
+        public Builder clearName() {
+          result.hasName = false;
+          result.name_ = com.google.protobuf.ByteString.EMPTY;
+          return this;
+        }
+        
+        // optional int32 stores = 2;
+        public boolean hasStores() {
+          return result.hasStores();
+        }
+        public int getStores() {
+          return result.getStores();
+        }
+        public Builder setStores(int value) {
+          result.hasStores = true;
+          result.stores_ = value;
+          return this;
+        }
+        public Builder clearStores() {
+          result.hasStores = false;
+          result.stores_ = 0;
+          return this;
+        }
+        
+        // optional int32 storefiles = 3;
+        public boolean hasStorefiles() {
+          return result.hasStorefiles();
+        }
+        public int getStorefiles() {
+          return result.getStorefiles();
+        }
+        public Builder setStorefiles(int value) {
+          result.hasStorefiles = true;
+          result.storefiles_ = value;
+          return this;
+        }
+        public Builder clearStorefiles() {
+          result.hasStorefiles = false;
+          result.storefiles_ = 0;
+          return this;
+        }
+        
+        // optional int32 storefileSizeMB = 4;
+        public boolean hasStorefileSizeMB() {
+          return result.hasStorefileSizeMB();
+        }
+        public int getStorefileSizeMB() {
+          return result.getStorefileSizeMB();
+        }
+        public Builder setStorefileSizeMB(int value) {
+          result.hasStorefileSizeMB = true;
+          result.storefileSizeMB_ = value;
+          return this;
+        }
+        public Builder clearStorefileSizeMB() {
+          result.hasStorefileSizeMB = false;
+          result.storefileSizeMB_ = 0;
+          return this;
+        }
+        
+        // optional int32 memstoreSizeMB = 5;
+        public boolean hasMemstoreSizeMB() {
+          return result.hasMemstoreSizeMB();
+        }
+        public int getMemstoreSizeMB() {
+          return result.getMemstoreSizeMB();
+        }
+        public Builder setMemstoreSizeMB(int value) {
+          result.hasMemstoreSizeMB = true;
+          result.memstoreSizeMB_ = value;
+          return this;
+        }
+        public Builder clearMemstoreSizeMB() {
+          result.hasMemstoreSizeMB = false;
+          result.memstoreSizeMB_ = 0;
+          return this;
+        }
+        
+        // optional int32 storefileIndexSizeMB = 6;
+        public boolean hasStorefileIndexSizeMB() {
+          return result.hasStorefileIndexSizeMB();
+        }
+        public int getStorefileIndexSizeMB() {
+          return result.getStorefileIndexSizeMB();
+        }
+        public Builder setStorefileIndexSizeMB(int value) {
+          result.hasStorefileIndexSizeMB = true;
+          result.storefileIndexSizeMB_ = value;
+          return this;
+        }
+        public Builder clearStorefileIndexSizeMB() {
+          result.hasStorefileIndexSizeMB = false;
+          result.storefileIndexSizeMB_ = 0;
+          return this;
+        }
+      }
+      
+      static {
+        org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.getDescriptor();
+      }
+    }
+    
     public static final class Node extends
         com.google.protobuf.GeneratedMessage {
       // Use Node.newBuilder() to construct.
@@ -64,35 +531,52 @@
       public boolean hasName() { return hasName; }
       public java.lang.String getName() { return name_; }
       
-      // optional int64 startCode = 4;
-      public static final int STARTCODE_FIELD_NUMBER = 4;
+      // optional int64 startCode = 2;
+      public static final int STARTCODE_FIELD_NUMBER = 2;
       private boolean hasStartCode;
       private long startCode_ = 0L;
       public boolean hasStartCode() { return hasStartCode; }
       public long getStartCode() { return startCode_; }
       
-      // optional int32 requests = 2;
-      public static final int REQUESTS_FIELD_NUMBER = 2;
+      // optional int32 requests = 3;
+      public static final int REQUESTS_FIELD_NUMBER = 3;
       private boolean hasRequests;
       private int requests_ = 0;
       public boolean hasRequests() { return hasRequests; }
       public int getRequests() { return requests_; }
       
-      // repeated bytes regions = 3;
-      public static final int REGIONS_FIELD_NUMBER = 3;
-      private java.util.List<com.google.protobuf.ByteString> regions_ =
+      // optional int32 heapSizeMB = 4;
+      public static final int HEAPSIZEMB_FIELD_NUMBER = 4;
+      private boolean hasHeapSizeMB;
+      private int heapSizeMB_ = 0;
+      public boolean hasHeapSizeMB() { return hasHeapSizeMB; }
+      public int getHeapSizeMB() { return heapSizeMB_; }
+      
+      // optional int32 maxHeapSizeMB = 5;
+      public static final int MAXHEAPSIZEMB_FIELD_NUMBER = 5;
+      private boolean hasMaxHeapSizeMB;
+      private int maxHeapSizeMB_ = 0;
+      public boolean hasMaxHeapSizeMB() { return hasMaxHeapSizeMB; }
+      public int getMaxHeapSizeMB() { return maxHeapSizeMB_; }
+      
+      // repeated .org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatus.Region regions = 6;
+      public static final int REGIONS_FIELD_NUMBER = 6;
+      private java.util.List<org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region> regions_ =
         java.util.Collections.emptyList();
-      public java.util.List<com.google.protobuf.ByteString> getRegionsList() {
+      public java.util.List<org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region> getRegionsList() {
         return regions_;
       }
       public int getRegionsCount() { return regions_.size(); }
-      public com.google.protobuf.ByteString getRegions(int index) {
+      public org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region getRegions(int index) {
         return regions_.get(index);
       }
       
       @Override
       public final boolean isInitialized() {
         if (!hasName) return false;
+        for (org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region element : getRegionsList()) {
+          if (!element.isInitialized()) return false;
+        }
         return true;
       }
       
@@ -102,14 +586,20 @@
         if (hasName()) {
           output.writeString(1, getName());
         }
+        if (hasStartCode()) {
+          output.writeInt64(2, getStartCode());
+        }
         if (hasRequests()) {
-          output.writeInt32(2, getRequests());
+          output.writeInt32(3, getRequests());
         }
-        for (com.google.protobuf.ByteString element : getRegionsList()) {
-          output.writeBytes(3, element);
+        if (hasHeapSizeMB()) {
+          output.writeInt32(4, getHeapSizeMB());
         }
-        if (hasStartCode()) {
-          output.writeInt64(4, getStartCode());
+        if (hasMaxHeapSizeMB()) {
+          output.writeInt32(5, getMaxHeapSizeMB());
+        }
+        for (org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region element : getRegionsList()) {
+          output.writeMessage(6, element);
         }
         getUnknownFields().writeTo(output);
       }
@@ -125,22 +615,25 @@
           size += com.google.protobuf.CodedOutputStream
             .computeStringSize(1, getName());
         }
+        if (hasStartCode()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt64Size(2, getStartCode());
+        }
         if (hasRequests()) {
           size += com.google.protobuf.CodedOutputStream
-            .computeInt32Size(2, getRequests());
+            .computeInt32Size(3, getRequests());
         }
-        {
-          int dataSize = 0;
-          for (com.google.protobuf.ByteString element : getRegionsList()) {
-            dataSize += com.google.protobuf.CodedOutputStream
-              .computeBytesSizeNoTag(element);
-          }
-          size += dataSize;
-          size += 1 * getRegionsList().size();
+        if (hasHeapSizeMB()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(4, getHeapSizeMB());
         }
-        if (hasStartCode()) {
+        if (hasMaxHeapSizeMB()) {
+          size += com.google.protobuf.CodedOutputStream
+            .computeInt32Size(5, getMaxHeapSizeMB());
+        }
+        for (org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region element : getRegionsList()) {
           size += com.google.protobuf.CodedOutputStream
-            .computeInt64Size(4, getStartCode());
+            .computeMessageSize(6, element);
         }
         size += getUnknownFields().getSerializedSize();
         memoizedSerializedSize = size;
@@ -296,9 +789,15 @@
           if (other.hasRequests()) {
             setRequests(other.getRequests());
           }
+          if (other.hasHeapSizeMB()) {
+            setHeapSizeMB(other.getHeapSizeMB());
+          }
+          if (other.hasMaxHeapSizeMB()) {
+            setMaxHeapSizeMB(other.getMaxHeapSizeMB());
+          }
           if (!other.regions_.isEmpty()) {
             if (result.regions_.isEmpty()) {
-              result.regions_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
+              result.regions_ = new java.util.ArrayList<org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region>();
             }
             result.regions_.addAll(other.regions_);
           }
@@ -341,15 +840,25 @@
                 break;
               }
               case 16: {
-                setRequests(input.readInt32());
+                setStartCode(input.readInt64());
                 break;
               }
-              case 26: {
-                addRegions(input.readBytes());
+              case 24: {
+                setRequests(input.readInt32());
                 break;
               }
               case 32: {
-                setStartCode(input.readInt64());
+                setHeapSizeMB(input.readInt32());
+                break;
+              }
+              case 40: {
+                setMaxHeapSizeMB(input.readInt32());
+                break;
+              }
+              case 50: {
+                org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.Builder subBuilder = org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.newBuilder();
+                input.readMessage(subBuilder, extensionRegistry);
+                addRegions(subBuilder.buildPartial());
                 break;
               }
             }
@@ -378,7 +887,7 @@
           return this;
         }
         
-        // optional int64 startCode = 4;
+        // optional int64 startCode = 2;
         public boolean hasStartCode() {
           return result.hasStartCode();
         }
@@ -396,7 +905,7 @@
           return this;
         }
         
-        // optional int32 requests = 2;
+        // optional int32 requests = 3;
         public boolean hasRequests() {
           return result.hasRequests();
         }
@@ -414,37 +923,84 @@
           return this;
         }
         
-        // repeated bytes regions = 3;
-        public java.util.List<com.google.protobuf.ByteString> getRegionsList() {
+        // optional int32 heapSizeMB = 4;
+        public boolean hasHeapSizeMB() {
+          return result.hasHeapSizeMB();
+        }
+        public int getHeapSizeMB() {
+          return result.getHeapSizeMB();
+        }
+        public Builder setHeapSizeMB(int value) {
+          result.hasHeapSizeMB = true;
+          result.heapSizeMB_ = value;
+          return this;
+        }
+        public Builder clearHeapSizeMB() {
+          result.hasHeapSizeMB = false;
+          result.heapSizeMB_ = 0;
+          return this;
+        }
+        
+        // optional int32 maxHeapSizeMB = 5;
+        public boolean hasMaxHeapSizeMB() {
+          return result.hasMaxHeapSizeMB();
+        }
+        public int getMaxHeapSizeMB() {
+          return result.getMaxHeapSizeMB();
+        }
+        public Builder setMaxHeapSizeMB(int value) {
+          result.hasMaxHeapSizeMB = true;
+          result.maxHeapSizeMB_ = value;
+          return this;
+        }
+        public Builder clearMaxHeapSizeMB() {
+          result.hasMaxHeapSizeMB = false;
+          result.maxHeapSizeMB_ = 0;
+          return this;
+        }
+        
+        // repeated .org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatus.Region regions = 6;
+        public java.util.List<org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region> getRegionsList() {
           return java.util.Collections.unmodifiableList(result.regions_);
         }
         public int getRegionsCount() {
           return result.getRegionsCount();
         }
-        public com.google.protobuf.ByteString getRegions(int index) {
+        public org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region getRegions(int index) {
           return result.getRegions(index);
         }
-        public Builder setRegions(int index, com.google.protobuf.ByteString value) {
+        public Builder setRegions(int index, org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region value) {
           if (value == null) {
-    throw new NullPointerException();
-  }
-  result.regions_.set(index, value);
+            throw new NullPointerException();
+          }
+          result.regions_.set(index, value);
           return this;
         }
-        public Builder addRegions(com.google.protobuf.ByteString value) {
+        public Builder setRegions(int index, org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.Builder builderForValue) {
+          result.regions_.set(index, builderForValue.build());
+          return this;
+        }
+        public Builder addRegions(org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region value) {
           if (value == null) {
-    throw new NullPointerException();
-  }
-  if (result.regions_.isEmpty()) {
-            result.regions_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
+            throw new NullPointerException();
+          }
+          if (result.regions_.isEmpty()) {
+            result.regions_ = new java.util.ArrayList<org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region>();
           }
           result.regions_.add(value);
           return this;
         }
+        public Builder addRegions(org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.Builder builderForValue) {
+          if (result.regions_.isEmpty()) {
+            result.regions_ = new java.util.ArrayList<org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region>();
+          }
+          result.regions_.add(builderForValue.build());
+          return this;
+        }
         public Builder addAllRegions(
-            java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
+            java.lang.Iterable<? extends org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region> values) {
           if (result.regions_.isEmpty()) {
-            result.regions_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
+            result.regions_ = new java.util.ArrayList<org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region>();
           }
           super.addAll(values, result.regions_);
           return this;
@@ -954,6 +1510,11 @@
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_fieldAccessorTable;
   private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Region_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Region_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
     internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Node_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
@@ -969,14 +1530,20 @@
     java.lang.String descriptorData =
       "\n!StorageClusterStatusMessage.proto\0223org" +
       ".apache.hadoop.hbase.stargate.protobuf.g" +
-      "enerated\"\220\002\n\024StorageClusterStatus\022a\n\tliv" +
+      "enerated\"\232\004\n\024StorageClusterStatus\022a\n\tliv" +
       "eNodes\030\001 \003(\0132N.org.apache.hadoop.hbase.s" +
       "targate.protobuf.generated.StorageCluste" +
       "rStatus.Node\022\021\n\tdeadNodes\030\002 \003(\t\022\017\n\007regio" +
       "ns\030\003 \001(\005\022\020\n\010requests\030\004 \001(\005\022\023\n\013averageLoa" +
-      "d\030\005 \001(\001\032J\n\004Node\022\014\n\004name\030\001 \002(\t\022\021\n\tstartCo" +
-      "de\030\004 \001(\003\022\020\n\010requests\030\002 \001(\005\022\017\n\007regions\030\003 " +
-      "\003(\014";
+      "d\030\005 \001(\001\032\211\001\n\006Region\022\014\n\004name\030\001 \002(\014\022\016\n\006stor" +
+      "es\030\002 \001(\005\022\022\n\nstorefiles\030\003 \001(\005\022\027\n\017storefil" +
+      "eSizeMB\030\004 \001(\005\022\026\n\016memstoreSizeMB\030\005 \001(\005\022\034\n" +
+      "\024storefileIndexSizeMB\030\006 \001(\005\032\307\001\n\004Node\022\014\n\004" +
+      "name\030\001 \002(\t\022\021\n\tstartCode\030\002 \001(\003\022\020\n\010request" +
+      "s\030\003 \001(\005\022\022\n\nheapSizeMB\030\004 \001(\005\022\025\n\rmaxHeapSi" +
+      "zeMB\030\005 \001(\005\022a\n\007regions\030\006 \003(\0132P.org.apache" +
+      ".hadoop.hbase.stargate.protobuf.generate" +
+      "d.StorageClusterStatus.Region";
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
         public com.google.protobuf.ExtensionRegistry assignDescriptors(
@@ -990,12 +1557,20 @@
               new java.lang.String[] { "LiveNodes", "DeadNodes", "Regions", "Requests", "AverageLoad", },
               org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.class,
               org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Builder.class);
-          internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Node_descriptor =
+          internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Region_descriptor =
             internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_descriptor.getNestedTypes().get(0);
+          internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Region_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Region_descriptor,
+              new java.lang.String[] { "Name", "Stores", "Storefiles", "StorefileSizeMB", "MemstoreSizeMB", "StorefileIndexSizeMB", },
+              org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.class,
+              org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Region.Builder.class);
+          internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Node_descriptor =
+            internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_descriptor.getNestedTypes().get(1);
           internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Node_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_org_apache_hadoop_hbase_stargate_protobuf_generated_StorageClusterStatus_Node_descriptor,
-              new java.lang.String[] { "Name", "StartCode", "Requests", "Regions", },
+              new java.lang.String[] { "Name", "StartCode", "Requests", "HeapSizeMB", "MaxHeapSizeMB", "Regions", },
               org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Node.class,
               org.apache.hadoop.hbase.stargate.protobuf.generated.StorageClusterStatusMessage.StorageClusterStatus.Node.Builder.class);
           return null;

Modified: hadoop/hbase/trunk/src/contrib/stargate/src/test/org/apache/hadoop/hbase/stargate/model/TestStorageClusterStatusModel.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/contrib/stargate/src/test/org/apache/hadoop/hbase/stargate/model/TestStorageClusterStatusModel.java?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/contrib/stargate/src/test/org/apache/hadoop/hbase/stargate/model/TestStorageClusterStatusModel.java (original)
+++ hadoop/hbase/trunk/src/contrib/stargate/src/test/org/apache/hadoop/hbase/stargate/model/TestStorageClusterStatusModel.java Thu Jul 16 23:13:41 2009
@@ -37,20 +37,23 @@
 
   private static final String AS_XML =
     "<ClusterStatus requests=\"0\" regions=\"2\" averageLoad=\"1.0\">" +
-      "<LiveNodes>" +
-        "<Node startCode=\"1245219839331\" requests=\"0\" name=\"test1\">" +
-          "<Region name=\"LVJPT1QtLCww\"/>" + 
-        "</Node>" +
-        "<Node startCode=\"1245239331198\" requests=\"0\" name=\"test2\">" +
-          "<Region name=\"Lk1FVEEuLCwxMjQ2MDAwMDQzNzI0\"/>" +
-        "</Node>" +
-      "</LiveNodes>" +
-      "<DeadNodes/>" +
-    "</ClusterStatus>";
+    "<DeadNodes/>" + 
+    "<LiveNodes><Node startCode=\"1245219839331\" requests=\"0\"" + 
+      " name=\"test1\" maxHeapSizeMB=\"1024\" heapSizeMB=\"128\">" + 
+        "<Region stores=\"1\" storefiles=\"1\" storefileSizeMB=\"0\"" + 
+        " storefileIndexSizeMB=\"0\" name=\"LVJPT1QtLCww\"" + 
+        " memstoreSizeMB=\"0\"/></Node>" + 
+      "<Node startCode=\"1245239331198\" requests=\"0\" name=\"test2\"" + 
+        " maxHeapSizeMB=\"1024\" heapSizeMB=\"512\">" + 
+        "<Region stores=\"1\" storefiles=\"1\" storefileSizeMB=\"0\"" +
+        " storefileIndexSizeMB=\"0\" name=\"Lk1FVEEuLCwxMjQ2MDAwMDQzNzI0\"" +
+        " memstoreSizeMB=\"0\"/></Node>"+
+    "</LiveNodes></ClusterStatus>";
 
   private static final String AS_PB = 
-    "ChsKBXRlc3QxEAAaCS1ST09ULSwsMCDjuovnniQKJwoFdGVzdDIQABoVLk1FVEEuLCwxMjQ2MDAw" +
-    "MDQzNzI0IP6SsfCeJBgCIAApAAAAAAAA8D8=";
+"Ci0KBXRlc3QxEOO6i+eeJBgAIIABKIAIMhUKCS1ST09ULSwsMBABGAEgACgAMAAKOQoFdGVzdDIQ"+
+"/pKx8J4kGAAggAQogAgyIQoVLk1FVEEuLCwxMjQ2MDAwMDQzNzI0EAEYASAAKAAwABgCIAApAAAA"+
+"AAAA8D8=";
 
   private JAXBContext context;
 
@@ -64,10 +67,10 @@
     model.setRegions(2);
     model.setRequests(0);
     model.setAverageLoad(1.0);
-    model.addLiveNode("test1", 1245219839331L)
-      .addRegion(Bytes.toBytes("-ROOT-,,0"));
-    model.addLiveNode("test2", 1245239331198L)
-      .addRegion(Bytes.toBytes(".META.,,1246000043724"));
+    model.addLiveNode("test1", 1245219839331L, 128, 1024)
+      .addRegion(Bytes.toBytes("-ROOT-,,0"), 1, 1, 0, 0, 0);
+    model.addLiveNode("test2", 1245239331198L, 512, 1024)
+      .addRegion(Bytes.toBytes(".META.,,1246000043724"),1, 1, 0, 0, 0);
     return model;
   }
 
@@ -102,17 +105,31 @@
     StorageClusterStatusModel.Node node = nodes.next();
     assertEquals(node.getName(), "test1");
     assertEquals(node.getStartCode(), 1245219839331L);
+    assertEquals(node.getHeapSizeMB(), 128);
+    assertEquals(node.getMaxHeapSizeMB(), 1024);
     Iterator<StorageClusterStatusModel.Node.Region> regions = 
       node.getRegions().iterator();
     StorageClusterStatusModel.Node.Region region = regions.next();
     assertTrue(Bytes.toString(region.getName()).equals("-ROOT-,,0"));
+    assertEquals(region.getStores(), 1);
+    assertEquals(region.getStorefiles(), 1);
+    assertEquals(region.getStorefileSizeMB(), 0);
+    assertEquals(region.getMemstoreSizeMB(), 0);
+    assertEquals(region.getStorefileIndexSizeMB(), 0);
     assertFalse(regions.hasNext());
     node = nodes.next();
     assertEquals(node.getName(), "test2");
     assertEquals(node.getStartCode(), 1245239331198L);
+    assertEquals(node.getHeapSizeMB(), 512);
+    assertEquals(node.getMaxHeapSizeMB(), 1024);
     regions = node.getRegions().iterator();
     region = regions.next();
     assertEquals(Bytes.toString(region.getName()), ".META.,,1246000043724");
+    assertEquals(region.getStores(), 1);
+    assertEquals(region.getStorefiles(), 1);
+    assertEquals(region.getStorefileSizeMB(), 0);
+    assertEquals(region.getMemstoreSizeMB(), 0);
+    assertEquals(region.getStorefileIndexSizeMB(), 0);
     assertFalse(regions.hasNext());
     assertFalse(nodes.hasNext());
   }

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HServerLoad.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HServerLoad.java?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HServerLoad.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/HServerLoad.java Thu Jul 16 23:13:41 2009
@@ -59,6 +59,8 @@
     private int stores;
     /** the number of storefiles for the region */
     private int storefiles;
+    /** the current total size of the store files for the region, in MB */
+    private int storefileSizeMB;
     /** the current size of the memstore for the region, in MB */
     private int memstoreSizeMB;
     /** the current total size of storefile indexes for the region, in MB */
@@ -75,15 +77,17 @@
      * @param name
      * @param stores
      * @param storefiles
+     * @param storefileSizeMB
      * @param memstoreSizeMB
      * @param storefileIndexSizeMB
      */
     public RegionLoad(final byte[] name, final int stores,
-        final int storefiles, final int memstoreSizeMB,
-        final int storefileIndexSizeMB) {
+        final int storefiles, final int storefileSizeMB, 
+        final int memstoreSizeMB, final int storefileIndexSizeMB) {
       this.name = name;
       this.stores = stores;
       this.storefiles = storefiles;
+      this.storefileSizeMB = storefileSizeMB;
       this.memstoreSizeMB = memstoreSizeMB;
       this.storefileIndexSizeMB = storefileIndexSizeMB;
     }
@@ -119,6 +123,13 @@
     }
 
     /**
+     * @return the total size of the storefiles, in MB
+     */
+    public int getStorefileSizeMB() {
+      return storefileSizeMB;
+    }
+
+    /**
      * @return the memstore size, in MB
      */
     public int getMemStoreSizeMB() {
@@ -177,6 +188,7 @@
       in.readFully(this.name);
       this.stores = in.readInt();
       this.storefiles = in.readInt();
+      this.storefileSizeMB = in.readInt();
       this.memstoreSizeMB = in.readInt();
       this.storefileIndexSizeMB = in.readInt();
     }
@@ -186,6 +198,7 @@
       out.write(name);
       out.writeInt(stores);
       out.writeInt(storefiles);
+      out.writeInt(storefileSizeMB);
       out.writeInt(memstoreSizeMB);
       out.writeInt(storefileIndexSizeMB);
     }
@@ -199,9 +212,11 @@
         Integer.valueOf(this.stores));
       sb = Strings.appendKeyValue(sb, "storefiles",
         Integer.valueOf(this.storefiles));
-      sb = Strings.appendKeyValue(sb, "memstoreSize",
+      sb = Strings.appendKeyValue(sb, "storefileSizeMB",
+          Integer.valueOf(this.storefileSizeMB));
+      sb = Strings.appendKeyValue(sb, "memstoreSizeMB",
         Integer.valueOf(this.memstoreSizeMB));
-      sb = Strings.appendKeyValue(sb, "storefileIndexSize",
+      sb = Strings.appendKeyValue(sb, "storefileIndexSizeMB",
         Integer.valueOf(this.storefileIndexSizeMB));
       return sb.toString();
     }
@@ -333,6 +348,20 @@
   }
 
   /**
+   * @returns the amount of heap in use, in MB
+   */
+  public int getUsedHeapMB() {
+    return usedHeapMB;
+  }
+
+  /**
+   * @returns the maximum allowable heap size, in MB
+   */
+  public int getMaxHeapMB() {
+    return maxHeapMB;
+  }
+
+  /**
    * @return region load metrics
    */
   public Collection<RegionLoad> getRegionsLoad() {
@@ -350,6 +379,16 @@
   }
 
   /**
+   * @return Total size of store files in MB
+   */
+  public int getStorefileSizeInMB() {
+    int count = 0;
+    for (RegionLoad info: regionLoad)
+      count += info.getStorefileSizeMB();
+    return count;
+  }
+
+  /**
    * @return Size of memstores in MB
    */
   public int getMemStoreSizeInMB() {
@@ -417,10 +456,10 @@
    */
   @Deprecated
   public void addRegionInfo(final byte[] name, final int stores,
-      final int storefiles, final int memstoreSizeMB,
-      final int storefileIndexSizeMB) {
+      final int storefiles, final int storefileSizeMB,
+      final int memstoreSizeMB, final int storefileIndexSizeMB) {
     this.regionLoad.add(new HServerLoad.RegionLoad(name, stores, storefiles,
-      memstoreSizeMB, storefileIndexSizeMB));
+      storefileSizeMB, memstoreSizeMB, storefileIndexSizeMB));
   }
 
   // Writable

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/ipc/HBaseRPCProtocolVersion.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/ipc/HBaseRPCProtocolVersion.java?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/ipc/HBaseRPCProtocolVersion.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/ipc/HBaseRPCProtocolVersion.java Thu Jul 16 23:13:41 2009
@@ -72,7 +72,8 @@
    * <li>Version 18: HBASE-1302.</li>
    * <li>Version 19: Added getClusterStatus().</li>
    * <li>Version 20: Backed Transaction HBase out of HBase core.</li>
+   * <li>Version 21: HBASE-1665.</li>
    * </ul>
    */
-  public static final long versionID = 20L;
+  public static final long versionID = 21L;
 }

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=794902&r1=794901&r2=794902&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 Thu Jul 16 23:13:41 2009
@@ -759,18 +759,21 @@
     byte[] name = r.getRegionName();
     int stores = 0;
     int storefiles = 0;
+    int storefileSizeMB = 0;
     int memstoreSizeMB = (int)(r.memstoreSize.get()/1024/1024);
     int storefileIndexSizeMB = 0;
     synchronized (r.stores) {
       stores += r.stores.size();
       for (Store store: r.stores.values()) {
         storefiles += store.getStorefilesCount();
+        storefileSizeMB += 
+          (int)(store.getStorefilesSize()/1024/1024);
         storefileIndexSizeMB += 
           (int)(store.getStorefilesIndexSize()/1024/1024);
       }
     }
-    return new HServerLoad.RegionLoad(name, stores, storefiles, memstoreSizeMB,
-      storefileIndexSizeMB);
+    return new HServerLoad.RegionLoad(name, stores, storefiles,
+      storefileSizeMB, memstoreSizeMB, storefileIndexSizeMB);
   }
  
   /**

Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java?rev=794902&r1=794901&r2=794902&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/Store.java Thu Jul 16 23:13:41 2009
@@ -1406,6 +1406,22 @@
   }
 
   /**
+   * @return The size of the store files, in bytes.
+   */
+  long getStorefilesSize() {
+    long size = 0;
+    for (StoreFile s: storefiles.values()) {
+      Reader r = s.getReader();
+      if (r == null) {
+        LOG.warn("StoreFile " + s + " has a null Reader");
+        continue;
+      }
+      size += r.length();
+    }
+    return size;
+  }
+
+  /**
    * @return The size of the store file indexes, in bytes.
    */
   long getStorefilesIndexSize() {



Mime
View raw message