Index: src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java (revision 1416356) +++ src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java (working copy) @@ -494,6 +494,7 @@ private final Object masterLock = new Object(); private volatile boolean closed; private volatile boolean aborted; + private volatile boolean reseting; private volatile HMasterInterface master; private volatile boolean masterChecked; // ZooKeeper reference @@ -506,6 +507,8 @@ private final Object metaRegionLock = new Object(); private final Object userRegionLock = new Object(); + + private final Object resetLock = new Object(); private final Configuration conf; // Known region HServerAddress.toString() -> HRegionInterface @@ -575,6 +578,7 @@ this.master = null; this.masterChecked = false; + this.reseting = false; } private synchronized void ensureZookeeperTrackers() @@ -1686,7 +1690,12 @@ LOG.info("ZK session expired. This disconnect could have been" + " caused by a network partition or a long-running GC pause," + " either way it's recommended that you verify your environment."); + synchronized (resetLock) { + if (this.reseting) return; + this.reseting = true; + } resetZooKeeperTrackers(); + this.reseting = false; } return; }