diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java index 9144c2e7265..6939d8ebcc5 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/ServerManager.java @@ -582,12 +582,12 @@ public class ServerManager { * 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 AND - * the 'hbase.master.wait.on.regionservers.timeout' is reached + * 'hbase.master.wait.on.regionservers.interval' time * * @throws InterruptedException */ @@ -596,18 +596,11 @@ public class ServerManager { 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); - 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; - } + getInt("hbase.master.wait.on.regionservers.mintostart", 1); + final int maxToStart = this.master.getConfiguration(). + getInt("hbase.master.wait.on.regionservers.maxtostart", Integer.MAX_VALUE); long now = System.currentTimeMillis(); final long startTime = now; @@ -618,8 +611,9 @@ public class ServerManager { int oldCount = 0; while ( !this.master.isStopped() && + slept < timeout && count < maxToStart && - (lastCountChange+interval > now || timeout > slept || count < minToStart) + (lastCountChange+interval > now || count < minToStart) ){ // Log some info at every interval time or if there is a change diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index cacd4ed7424..be932d7c429 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -655,9 +655,8 @@ public class HBaseTestingUtility { // These settings will make the server waits until this exact number of // regions servers are connected. - String count = String.valueOf(numSlaves); - conf.setIfUnset("hbase.master.wait.on.regionservers.mintostart", count); - conf.setIfUnset("hbase.master.wait.on.regionservers.maxtostart", count); + conf.setInt("hbase.master.wait.on.regionservers.mintostart", numSlaves); + conf.setInt("hbase.master.wait.on.regionservers.maxtostart", numSlaves); Configuration c = new Configuration(this.conf); this.hbaseCluster = new MiniHBaseCluster(c, numMasters, numSlaves); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenMasterInitializing.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenMasterInitializing.java index eae09cf281e..d77f3d89a7d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenMasterInitializing.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenMasterInitializing.java @@ -69,11 +69,8 @@ public class TestRSKilledWhenMasterInitializing { @BeforeClass public static void setUpBeforeClass() throws Exception { // Set it so that this test runs with my custom master - 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); - + TESTUTIL.getConfiguration().setClass(HConstants.MASTER_IMPL, + TestingMaster.class, HMaster.class); // Start up the cluster. TESTUTIL.startMiniCluster(NUM_MASTERS, NUM_RS); }