Index: src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java (revision 1149493) +++ src/main/java/org/apache/hadoop/hbase/master/ActiveMasterManager.java (working copy) @@ -46,7 +46,7 @@ class ActiveMasterManager extends ZooKeeperListener { private static final Log LOG = LogFactory.getLog(ActiveMasterManager.class); - final AtomicBoolean clusterHasActiveMaster = new AtomicBoolean(false); + final AtomicBoolean clusterHasActiveMaster = new AtomicBoolean(true); private final HServerAddress address; private final Server master; @@ -56,6 +56,11 @@ super(watcher); this.address = address; this.master = master; + try { + ZKUtil.watchAndCheckExists(watcher, watcher.masterAddressZNode); + } catch (KeeperException ke) { + master.abort("Received an unexpected KeeperException, aborting", ke); + } } @Override Index: src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 1149493) +++ src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -245,7 +245,7 @@ "Stalling until master znode is written."); // This will only be a minute or so while the cluster starts up, // so don't worry about setting watches on the parent znode - while (!amm.isActiveMaster()) { + while (amm.isActiveMaster()) { LOG.debug("Waiting for master address ZNode to be written " + "(Also watching cluster state node)"); Thread.sleep(c.getInt("zookeeper.session.timeout", 180 * 1000));