Index: src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 1204807) +++ src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -486,7 +486,10 @@ startServiceThreads(); // Wait for region servers to report in. - this.serverManager.waitForRegionServers(status); + boolean masterStopped = this.serverManager.waitForRegionServers(status); + if (masterStopped) { + return; + } // Check zk for regionservers that are up but didn't register for (ServerName sn: this.regionServerTracker.getOnlineServers()) { if (!this.serverManager.isServerOnline(sn)) { Index: src/main/java/org/apache/hadoop/hbase/master/ServerManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (revision 1204807) +++ src/main/java/org/apache/hadoop/hbase/master/ServerManager.java (working copy) @@ -519,7 +519,7 @@ * Waits for the regionservers to report in. * @throws InterruptedException */ - public void waitForRegionServers(MonitoredTask status) + public boolean waitForRegionServers(MonitoredTask status) throws InterruptedException { long interval = this.master.getConfiguration(). getLong("hbase.master.wait.on.regionservers.interval", 3000); @@ -541,6 +541,7 @@ status.setStatus(msg); oldcount = count; } + return this.master.isStopped(); } /**