diff options
author | Harald Musum <musum@yahoo-inc.com> | 2017-06-22 11:14:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-22 11:14:50 +0200 |
commit | ff9afee559ce51332ee25a89c9de02908a07ff94 (patch) | |
tree | 6a3469db2c489683d772c975225b998c1b85984a /zkfacade/src/main/java | |
parent | 980c9dd83f95b634c0c6d738edcdbad0e235aeaf (diff) |
Revert "Shutdown zookeeper properly"
Diffstat (limited to 'zkfacade/src/main/java')
-rw-r--r-- | zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java | 56 |
1 files changed, 18 insertions, 38 deletions
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java b/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java index 25779e7b391..76666d8e71e 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperServer.java @@ -6,15 +6,13 @@ import com.google.inject.Inject; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.component.AbstractComponent; import com.yahoo.log.LogLevel; -import org.apache.zookeeper.server.quorum.QuorumPeerConfig; -import org.apache.zookeeper.server.quorum.QuorumPeerMain; - import static com.yahoo.vespa.defaults.Defaults.getDefaults; import java.io.FileWriter; import java.io.IOException; import java.util.Collection; import java.util.List; +import java.util.Optional; /** * Writes zookeeper config and starts zookeeper server. @@ -22,7 +20,7 @@ import java.util.List; * @author lulf * @since 5.3 */ -public class ZooKeeperServer extends AbstractComponent{ +public class ZooKeeperServer extends AbstractComponent implements Runnable { /** * The set of hosts which can access the ZooKeeper server in this VM, or empty @@ -35,8 +33,7 @@ public class ZooKeeperServer extends AbstractComponent{ private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(ZooKeeperServer.class.getName()); private static final String ZOOKEEPER_JMX_LOG4J_DISABLE = "zookeeper.jmx.log4j.disable"; static final String ZOOKEEPER_JUTE_MAX_BUFFER = "jute.maxbuffer"; - - private final ZooKeeperMain zooKeeperMain; + private final Thread zkServerThread; private final ZookeeperServerConfig config; ZooKeeperServer(ZookeeperServerConfig config, boolean startServer) { @@ -46,9 +43,7 @@ public class ZooKeeperServer extends AbstractComponent{ System.setProperty("zookeeper.serverCnxnFactory", "com.yahoo.vespa.zookeeper.RestrictedServerCnxnFactory"); writeConfigToDisk(config); - this.zooKeeperMain = new ZooKeeperMain(config); - Thread zkServerThread = new Thread(zooKeeperMain, "zookeeper server"); - zkServerThread.setDaemon(true); + zkServerThread = new Thread(this, "zookeeper server"); if (startServer) { zkServerThread.start(); } @@ -123,7 +118,20 @@ public class ZooKeeperServer extends AbstractComponent{ } private void shutdown() { - zooKeeperMain.shutdown(); + zkServerThread.interrupt(); + try { + zkServerThread.join(); + } catch (InterruptedException e) { + log.log(LogLevel.WARNING, "Error joining server thread on shutdown", e); + } + } + + @Override + public void run() { + System.setProperty(ZOOKEEPER_JMX_LOG4J_DISABLE, "true"); + String[] args = new String[]{getDefaults().underVespaHome(config.zooKeeperConfigFile())}; + log.log(LogLevel.DEBUG, "Starting ZooKeeper server with config: " + args[0]); + org.apache.zookeeper.server.quorum.QuorumPeerMain.main(args); } @Override @@ -134,32 +142,4 @@ public class ZooKeeperServer extends AbstractComponent{ public ZookeeperServerConfig getConfig() { return config; } - /** Takes care of starting and stopping the zookeeper server properly */ - private static class ZooKeeperMain extends QuorumPeerMain implements Runnable { - private final ZookeeperServerConfig config; - - public ZooKeeperMain(ZookeeperServerConfig config) { - super(); - this.config = config; - } - - @Override - public void run() { - System.setProperty(ZOOKEEPER_JMX_LOG4J_DISABLE, "true"); - String[] args = new String[]{getDefaults().underVespaHome(config.zooKeeperConfigFile())}; - log.log(LogLevel.DEBUG, "Starting ZooKeeper server with config: " + args[0]); - try { - initializeAndRun(args); - } catch (QuorumPeerConfig.ConfigException e) { - throw new RuntimeException("Bad config: ", e); - } catch (IOException e) { - throw new RuntimeException("IO exception: ", e); - } - } - - public void shutdown() { - quorumPeer.shutdown(); - } - } - } |