diff options
author | Harald Musum <musum@verizonmedia.com> | 2020-12-07 18:33:23 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2020-12-07 18:33:23 +0100 |
commit | b0f74766d1b2af781d93da7d2ad89c89c8e9825b (patch) | |
tree | c4becfac705a4fd0469ac96a32d5e62a61a3d50e /zookeeper-server/zookeeper-server-3.5.6 | |
parent | 2effa9bfef3ad615887f4ecf3190ad87ccc22c6a (diff) |
Refactor to prepare for mving more code to zokeeper-server-common
Diffstat (limited to 'zookeeper-server/zookeeper-server-3.5.6')
5 files changed, 83 insertions, 35 deletions
diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java index 55ddd4778f1..b9cc573d06f 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java @@ -4,6 +4,13 @@ package com.yahoo.vespa.zookeeper; import com.google.inject.Inject; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.component.AbstractComponent; +import org.apache.zookeeper.server.admin.AdminServer; +import org.apache.zookeeper.server.quorum.QuorumPeerConfig; +import org.apache.zookeeper.server.quorum.QuorumPeerMain; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; /** * Starts or reconfigures zookeeper cluster @@ -14,7 +21,28 @@ public class ReconfigurableVespaZooKeeperServer extends AbstractComponent implem @Inject public ReconfigurableVespaZooKeeperServer(Reconfigurer reconfigurer, ZookeeperServerConfig zookeeperServerConfig) { - reconfigurer.startOrReconfigure(zookeeperServerConfig); + reconfigurer.startOrReconfigure(zookeeperServerConfig, this); + } + + public void start(Path path) { + String[] args = new String[]{ path.toFile().getAbsolutePath()}; + new Server().initializeAndRun(args); + } + + /** + * Extends QuorumPeerMain to be able to call initializeAndRun() + */ + static class Server extends QuorumPeerMain { + + @Override + protected void initializeAndRun(String[] args) { + try { + super.initializeAndRun(args); + } catch (QuorumPeerConfig.ConfigException | IOException | AdminServer.AdminServerException e) { + throw new RuntimeException("Exception when initializing or running ZooKeeper server", e); + } + } + } } diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java index 6a87d8547c1..3466b0a8d22 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java @@ -46,13 +46,13 @@ public class Reconfigurer extends AbstractComponent { log.log(Level.FINE, "Created ZooKeeperReconfigurer"); } - void startOrReconfigure(ZookeeperServerConfig newConfig) { - startOrReconfigure(newConfig, Reconfigurer::defaultSleeper); + void startOrReconfigure(ZookeeperServerConfig newConfig, VespaZooKeeperServer server) { + startOrReconfigure(newConfig, Reconfigurer::defaultSleeper, server); } - void startOrReconfigure(ZookeeperServerConfig newConfig, Consumer<Duration> sleeper) { + void startOrReconfigure(ZookeeperServerConfig newConfig, Consumer<Duration> sleeper, VespaZooKeeperServer server) { if (zooKeeperRunner == null) - zooKeeperRunner = startServer(newConfig); + zooKeeperRunner = startServer(newConfig, server); if (shouldReconfigure(newConfig)) reconfigure(newConfig, sleeper); @@ -74,8 +74,8 @@ public class Reconfigurer extends AbstractComponent { return !newConfig.equals(activeConfig()); } - private ZooKeeperRunner startServer(ZookeeperServerConfig zookeeperServerConfig) { - ZooKeeperRunner runner = new ZooKeeperRunner(zookeeperServerConfig); + private ZooKeeperRunner startServer(ZookeeperServerConfig zookeeperServerConfig, VespaZooKeeperServer server) { + ZooKeeperRunner runner = new ZooKeeperRunner(zookeeperServerConfig, server); activeConfig = zookeeperServerConfig; return runner; } diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java index 3c42d881ecc..abcf91527c6 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java @@ -4,6 +4,12 @@ package com.yahoo.vespa.zookeeper; import com.google.inject.Inject; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.component.AbstractComponent; +import org.apache.zookeeper.server.admin.AdminServer; +import org.apache.zookeeper.server.quorum.QuorumPeerConfig; +import org.apache.zookeeper.server.quorum.QuorumPeerMain; + +import java.io.IOException; +import java.nio.file.Path; /** * Main component controlling startup and stop of zookeeper server @@ -17,7 +23,7 @@ public class VespaZooKeeperServerImpl extends AbstractComponent implements Vespa @Inject public VespaZooKeeperServerImpl(ZookeeperServerConfig zookeeperServerConfig) { - this.zooKeeperRunner = new ZooKeeperRunner(zookeeperServerConfig); + this.zooKeeperRunner = new ZooKeeperRunner(zookeeperServerConfig, this); } @Override @@ -26,4 +32,26 @@ public class VespaZooKeeperServerImpl extends AbstractComponent implements Vespa super.deconstruct(); } + public void start(Path path) { + String[] args = new String[]{ path.toFile().getAbsolutePath()}; + new Server().initializeAndRun(args); + } + + /** + * Extends QuorumPeerMain to be able to call initializeAndRun() + */ + static class Server extends QuorumPeerMain { + + @Override + protected void initializeAndRun(String[] args) { + try { + super.initializeAndRun(args); + } catch (QuorumPeerConfig.ConfigException | IOException | AdminServer.AdminServerException e) { + throw new RuntimeException("Exception when initializing or running ZooKeeper server", e); + } + } + + } + + } diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java index 0ce905c90f9..492cfffa1ad 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/ZooKeeperRunner.java @@ -4,11 +4,9 @@ package com.yahoo.vespa.zookeeper; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.concurrent.DaemonThreadFactory; import com.yahoo.security.tls.TransportSecurityUtils; -import org.apache.zookeeper.server.admin.AdminServer; -import org.apache.zookeeper.server.quorum.QuorumPeerConfig; -import org.apache.zookeeper.server.quorum.QuorumPeerMain; -import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -29,9 +27,11 @@ public class ZooKeeperRunner implements Runnable { private final ExecutorService executorService; private final ZookeeperServerConfig zookeeperServerConfig; + private final VespaZooKeeperServer server; - public ZooKeeperRunner(ZookeeperServerConfig zookeeperServerConfig) { + public ZooKeeperRunner(ZookeeperServerConfig zookeeperServerConfig, VespaZooKeeperServer server) { this.zookeeperServerConfig = zookeeperServerConfig; + this.server = server; new Configurator(zookeeperServerConfig).writeConfigToDisk(TransportSecurityUtils.getOptions()); executorService = Executors.newSingleThreadExecutor(new DaemonThreadFactory("zookeeper server")); executorService.submit(this); @@ -53,26 +53,10 @@ public class ZooKeeperRunner implements Runnable { @Override public void run() { - String[] args = new String[]{getDefaults().underVespaHome(zookeeperServerConfig.zooKeeperConfigFile())}; - log.log(Level.INFO, "Starting ZooKeeper server with config file " + args[0] + + Path path = Paths.get(getDefaults().underVespaHome(zookeeperServerConfig.zooKeeperConfigFile())); + log.log(Level.INFO, "Starting ZooKeeper server with config file " + path.toFile().getAbsolutePath() + ". Trying to establish ZooKeeper quorum (members: " + zookeeperServerHostnames(zookeeperServerConfig) + ")"); - new Server().initializeAndRun(args); - } - - /** - * Extends QuoroumPeerMain to be able to call initializeAndRun() - */ - private static class Server extends QuorumPeerMain { - - @Override - protected void initializeAndRun(String[] args) { - try { - super.initializeAndRun(args); - } catch (QuorumPeerConfig.ConfigException | IOException | AdminServer.AdminServerException e) { - throw new RuntimeException("Exception when initializing or running ZooKeeper server", e); - } - } - + server.start(path); } } diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java b/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java index 662c88289d8..a93cc40d322 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/test/java/com/yahoo/vespa/zookeeper/ReconfigurerTest.java @@ -11,6 +11,7 @@ import org.junit.rules.TemporaryFolder; import java.io.File; import java.io.IOException; +import java.nio.file.Path; import java.util.stream.IntStream; import static org.junit.Assert.assertEquals; @@ -118,7 +119,7 @@ public class ReconfigurerTest { return builder; } - private static class TestableReconfigurer extends Reconfigurer { + private static class TestableReconfigurer extends Reconfigurer implements VespaZooKeeperServer{ private final TestableZkAdmin zkReconfigurer; @@ -128,9 +129,13 @@ public class ReconfigurerTest { HostName.setHostNameForTestingOnly("node1"); } - @Override void startOrReconfigure(ZookeeperServerConfig newConfig) { - super.startOrReconfigure(newConfig, l -> { }); + startOrReconfigure(newConfig, this); + } + + @Override + void startOrReconfigure(ZookeeperServerConfig newConfig, VespaZooKeeperServer server) { + super.startOrReconfigure(newConfig, l -> {}, this); } String connectionSpec() { @@ -149,6 +154,9 @@ public class ReconfigurerTest { return zkReconfigurer.reconfigurations; } + @Override + public void start(Path path) { } + } private static class TestableZkAdmin implements ZkAdmin { |