Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (revision 1363214) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (working copy) @@ -582,12 +582,12 @@ * Wait for the region servers to report in. * We will wait until one of this condition is met: * - the master is stopped - * - the 'hbase.master.wait.on.regionservers.timeout' is reached * - the 'hbase.master.wait.on.regionservers.maxtostart' number of * region servers is reached * - the 'hbase.master.wait.on.regionservers.mintostart' is reached AND * there have been no new region server in for - * 'hbase.master.wait.on.regionservers.interval' time + * 'hbase.master.wait.on.regionservers.interval' time AND + * the 'hbase.master.wait.on.regionservers.timeout' is reached * * @throws InterruptedException */ @@ -596,11 +596,18 @@ final long interval = this.master.getConfiguration(). getLong("hbase.master.wait.on.regionservers.interval", 1500); final long timeout = this.master.getConfiguration(). - getLong("hbase.master.wait.on.regionservers.timeout", 4500); + getLong("hbase.master.wait.on.regionservers.timeout", 4500); final int minToStart = this.master.getConfiguration(). - getInt("hbase.master.wait.on.regionservers.mintostart", 1); - final int maxToStart = this.master.getConfiguration(). - getInt("hbase.master.wait.on.regionservers.maxtostart", Integer.MAX_VALUE); + getInt("hbase.master.wait.on.regionservers.mintostart", 1); + int maxToStart = this.master.getConfiguration(). + getInt("hbase.master.wait.on.regionservers.maxtostart", Integer.MAX_VALUE); + if (maxToStart < minToStart) { + LOG.warn(String.format( + "The value of 'hbase.master.wait.on.regionservers.maxtostart' (%d)" + + " is set less than 'hbase.master.wait.on.regionservers.mintostart'" + + " (%d), ignoring.", maxToStart, minToStart)); + maxToStart = Integer.MAX_VALUE; + } long now = System.currentTimeMillis(); final long startTime = now; @@ -611,9 +618,8 @@ int oldCount = 0; while ( !this.master.isStopped() && - slept < timeout && count < maxToStart && - (lastCountChange+interval > now || count < minToStart) + (lastCountChange+interval > now || timeout > slept || count < minToStart) ){ // Log some info at every interval time or if there is a change Index: hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java (revision 1363214) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java (working copy) @@ -655,8 +655,9 @@ // These settings will make the server waits until this exact number of // regions servers are connected. - conf.setInt("hbase.master.wait.on.regionservers.mintostart", numSlaves); - conf.setInt("hbase.master.wait.on.regionservers.maxtostart", numSlaves); + String count = String.valueOf(numSlaves); + conf.setIfUnset("hbase.master.wait.on.regionservers.mintostart", count); + conf.setIfUnset("hbase.master.wait.on.regionservers.maxtostart", count); Configuration c = new Configuration(this.conf); this.hbaseCluster = new MiniHBaseCluster(c, numMasters, numSlaves); Index: hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenMasterInitializing.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenMasterInitializing.java (revision 1363214) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenMasterInitializing.java (working copy) @@ -69,8 +69,11 @@ @BeforeClass public static void setUpBeforeClass() throws Exception { // Set it so that this test runs with my custom master - TESTUTIL.getConfiguration().setClass(HConstants.MASTER_IMPL, - TestingMaster.class, HMaster.class); + Configuration conf = TESTUTIL.getConfiguration(); + conf.setClass(HConstants.MASTER_IMPL, TestingMaster.class, HMaster.class); + conf.setInt("hbase.master.wait.on.regionservers.mintostart", 3); + conf.setInt("hbase.master.wait.on.regionservers.maxtostart", 4); + // Start up the cluster. TESTUTIL.startMiniCluster(NUM_MASTERS, NUM_RS); } Index: hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java (revision 1363214) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/TestZooKeeper.java (working copy) @@ -198,6 +198,7 @@ LOG.info("Starting testRegionServerSessionExpired"); int metaIndex = TEST_UTIL.getMiniHBaseCluster().getServerWithMeta(); TEST_UTIL.expireRegionServerSession(metaIndex); + TEST_UTIL.getMiniHBaseCluster().waitOnRegionServer(metaIndex); testSanity(); }