diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index f677560..9b0fe1e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -771,15 +771,22 @@ public class HRegionServer extends HasThread implements // Since cluster status is now up // ID should have already been set by HMaster try { - clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper); - if (clusterId == null) { - this.abort("Cluster ID has not been set"); + long start = System.currentTimeMillis(); + while (clusterId == null && System.currentTimeMillis() - start < 300000) { + clusterId = ZKClusterId.readClusterIdZNode(this.zooKeeper); + if (clusterId == null) { + Thread.sleep(100); + } } + LOG.info("It took " + (System.currentTimeMillis() - start) + "ms"); LOG.info("ClusterId : "+clusterId); } catch (KeeperException e) { this.abort("Failed to retrieve Cluster ID",e); } + if (clusterId == null) { + this.abort("Cluster ID has not been set"); + } // In case colocated master, wait here till it's active. // So backup masters won't start as regionservers. // This is to avoid showing backup masters as regionservers