diff --git src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index e15eb47..600c574 100644 --- src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -39,7 +39,6 @@ import java.util.Map; import java.util.NavigableSet; import java.util.Random; import java.util.UUID; -import java.util.concurrent.atomic.AtomicBoolean; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -86,9 +85,10 @@ import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.hadoop.mapred.JobConf; import org.apache.hadoop.mapred.MiniMRCluster; import org.apache.zookeeper.KeeperException; -import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.KeeperException.NodeExistsException; +import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.ZooKeeper; +import org.apache.zookeeper.ZooKeeper.States; /** * Facility for testing HBase. Replacement for @@ -1396,6 +1396,14 @@ public class HBaseTestingUtility { // Making it expire ZooKeeper newZK = new ZooKeeper(quorumServers, sessionTimeout, EmptyWatcher.instance, sessionID, password); + + //ensure that we have connection to the server before closing down, otherwise + //the close session event will be eaten out before we start CONNECTING state + long start = System.currentTimeMillis(); + while (newZK.getState() != States.CONNECTED + && System.currentTimeMillis() - start < sessionTimeout) { + Thread.sleep(1); + } newZK.close(); LOG.info("ZK Closed Session 0x" + Long.toHexString(sessionID));