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()) {