Author: jdcryans
Date: Mon Apr 18 21:41:31 2011
New Revision: 1094775

URL: http://svn.apache.org/viewvc?rev=1094775&view=rev
Log:
Fix for HBASE-3767

Re-adding getCurrentNrHRS but in HConnection instead, where it belongs.
Modified the tests that rely on it.

Modified:
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnection.java
    
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnection.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnection.java?rev=1094775&r1=1094774&r2=1094775&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnection.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnection.java 
Mon Apr 18 21:41:31 2011
@@ -338,4 +338,11 @@ public interface HConnection extends Abo
    */
   public void prewarmRegionCache(final byte[] tableName,
       final Map<HRegionInfo, HServerAddress> regions);
+
+  /**
+   * Scan zookeeper to get the number of region servers
+   * @return the number of region servers that are currently running
+   * @throws IOException if a remote or network exception occurs
+   */
+  public int getCurrentNrHRS() throws IOException;
 }

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java?rev=1094775&r1=1094774&r2=1094775&view=diff
==============================================================================
--- 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
 (original)
+++ 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
 Mon Apr 18 21:41:31 2011
@@ -58,6 +58,7 @@ import org.apache.hadoop.hbase.util.Writ
 import org.apache.hadoop.hbase.zookeeper.ClusterId;
 import org.apache.hadoop.hbase.zookeeper.RootRegionTracker;
 import org.apache.hadoop.hbase.zookeeper.ZKTable;
+import org.apache.hadoop.hbase.zookeeper.ZKUtil;
 import org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher;
 import org.apache.hadoop.ipc.RemoteException;
 import org.apache.zookeeper.KeeperException;
@@ -1446,5 +1447,16 @@ public class HConnectionManager {
       else LOG.fatal(msg);
       this.closed = true;
     }
+
+    public int getCurrentNrHRS() throws IOException {
+      try {
+        // We go to zk rather than to master to get count of regions to avoid
+        // HTable having a Master dependency.  See HBase-2828
+        return ZKUtil.getNumberOfChildren(this.zooKeeper,
+            this.zooKeeper.rsZNode);
+      } catch (KeeperException ke) {
+        throw new IOException("Unexpected ZooKeeper exception", ke);
+      }
+    }
   }
 }

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java?rev=1094775&r1=1094774&r2=1094775&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/util/RegionSplitter.java 
Mon Apr 18 21:41:31 2011
@@ -351,7 +351,8 @@ public class RegionSplitter {
     HTable table = new HTable(conf, tableName);
 
     // max outstanding splits. default == 50% of servers
-    final int MAX_OUTSTANDING = Math.max(table.getCurrentNrHRS() / 2, minOS);
+    final int MAX_OUTSTANDING =
+        Math.max(table.getConnection().getCurrentNrHRS() / 2, minOS);
 
     Path hbDir = new Path(conf.get(HConstants.HBASE_DIR));
     Path tableDir = HTableDescriptor.getTableDir(hbDir, table.getTableName());

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java?rev=1094775&r1=1094774&r2=1094775&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java 
(original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java Mon 
Apr 18 21:41:31 2011
@@ -311,7 +311,7 @@ public class TestAdmin {
   }
 
   protected void verifyRoundRobinDistribution(HTable ht, int expectedRegions) 
throws IOException {
-    int numRS = ht.getCurrentNrHRS();
+    int numRS = ht.getConnection().getCurrentNrHRS();
     Map<HRegionInfo,HServerAddress> regions = ht.getRegionsInfo();
     Map<HServerAddress, List<HRegionInfo>> server2Regions = new 
HashMap<HServerAddress, List<HRegionInfo>>();
     for (Map.Entry<HRegionInfo,HServerAddress> entry : regions.entrySet()) {


Reply via email to