From 65471287894e970d2cbf9d19959f4f8f52a49549 Mon Sep 17 00:00:00 2001 From: Michael Stack Date: Thu, 26 Oct 2017 21:05:04 -0700 Subject: [PATCH] HBASE-19102 TestZooKeeperMainServer fails with KeeperException Signed-off-by: Michael Stack --- .../hadoop/hbase/zookeeper/ZooKeeperMainServer.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.java index e81da596a20..5415fd6a2bd 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/zookeeper/ZooKeeperMainServer.java @@ -20,7 +20,9 @@ package org.apache.hadoop.hbase.zookeeper; import java.io.IOException; +import java.util.concurrent.TimeUnit; +import org.apache.curator.shaded.com.google.common.base.Stopwatch; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HBaseInterfaceAudience; @@ -48,6 +50,15 @@ public class ZooKeeperMainServer { public HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain(String[] args) throws IOException, InterruptedException { super(args); + // Make sure we are connected before we proceed. Can take a while on some systems. If we + // run the command without being connected, we get ConnectionLoss KeeperErrorConnection... + Stopwatch stopWatch = Stopwatch.createStarted(); + while (!this.zk.getState().isConnected()) { + Thread.sleep(1); + if (stopWatch.elapsed(TimeUnit.SECONDS) > 10) { + throw new InterruptedException("Failed connect " + this.zk); + } + } } /** @@ -100,6 +111,8 @@ public class ZooKeeperMainServer { } } // If command-line arguments, run our hack so they are executed. + // ZOOKEEPER-1897 was committed to zookeeper-3.4.6 but elsewhere in this class we say + // 3.4.6 breaks command-processing; TODO. if (hasCommandLineArguments(args)) { HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain zkm = new HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain(newArgs);