diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-01-04 13:58:31 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2021-01-04 13:58:31 +0100 |
commit | 48ed00f737b95edd59dc3ea1d786d103d782296b (patch) | |
tree | d771467860c867d91be6ba24b5de3a7a402db21e /config-model | |
parent | 2daff17d7e3f7341c8efa4cf9cced09234b17a5e (diff) |
Make sure to setup all needed components for reconfigurable zookeeper server in cluster controller
Diffstat (limited to 'config-model')
3 files changed, 23 insertions, 18 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java index d7223018b73..d5da3753c99 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java @@ -20,6 +20,7 @@ import com.yahoo.vespa.model.container.component.Component; import com.yahoo.vespa.model.container.component.Handler; import com.yahoo.vespa.model.container.component.SimpleComponent; import com.yahoo.vespa.model.container.component.SystemBindingPattern; +import com.yahoo.vespa.model.container.xml.ContainerModelBuilder; import com.yahoo.vespa.model.container.xml.PlatformBundles; import java.util.Set; @@ -54,9 +55,6 @@ public class ClusterControllerContainer extends Container implements "com.yahoo.vespa.clustercontroller.apps.clustercontroller.StateRestApiV2Handler", "/cluster/v2/*", CLUSTERCONTROLLER_BUNDLE); - addComponent("clustercontroller-zookeeper-server", - zooKeeperServerImplementation(runStandaloneZooKeeper, deployState.featureFlags().reconfigurableZookeeperServer()), - ZOOKEEPER_SERVER_BUNDLE); addComponent(new AccessLogComponent(AccessLogComponent.AccessLogType.jsonAccessLog, "controller", deployState.isHosted())); @@ -67,6 +65,7 @@ public class ClusterControllerContainer extends Container implements addFileBundle("clustercontroller-utils"); addFileBundle("zookeeper-server"); configureReindexing(); + configureZooKeeperServer(runStandaloneZooKeeper, deployState.featureFlags().reconfigurableZookeeperServer()); } @Override @@ -84,13 +83,16 @@ public class ClusterControllerContainer extends Container implements return ContainerServiceType.CLUSTERCONTROLLER_CONTAINER; } - private String zooKeeperServerImplementation(boolean runStandaloneZooKeeper, boolean reconfigurable) { - if (reconfigurable) - return "com.yahoo.vespa.zookeeper.ReconfigurableVespaZooKeeperServer"; - else - return runStandaloneZooKeeper - ? "com.yahoo.vespa.zookeeper.VespaZooKeeperServerImpl" - : "com.yahoo.vespa.zookeeper.DummyVespaZooKeeperServer"; + private void configureZooKeeperServer(boolean runStandaloneZooKeeper, boolean reconfigurable) { + if (reconfigurable) { + ContainerModelBuilder.addReconfigurableZooKeeperServerComponents(this); + } else { + addComponent("clustercontroller-zookeeper-server", + runStandaloneZooKeeper + ? "com.yahoo.vespa.zookeeper.VespaZooKeeperServerImpl" + : "com.yahoo.vespa.zookeeper.DummyVespaZooKeeperServer", + ZOOKEEPER_SERVER_BUNDLE); + } } private void addHandler(Handler<?> h, String path) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index 7dca3b9f23b..8d7f85b0081 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -223,14 +223,16 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { // These need to be setup so that they will use the container's config id, since each container // have different config (id of zookeeper server) - cluster.getContainers().forEach(container -> { - container.addComponent(zookeeperComponent("com.yahoo.vespa.zookeeper.ReconfigurableVespaZooKeeperServer", container)); - container.addComponent(zookeeperComponent("com.yahoo.vespa.zookeeper.Reconfigurer", container)); - container.addComponent(zookeeperComponent("com.yahoo.vespa.zookeeper.VespaZooKeeperAdminImpl", container)); - }); + cluster.getContainers().forEach(ContainerModelBuilder::addReconfigurableZooKeeperServerComponents); + } + + public static void addReconfigurableZooKeeperServerComponents(Container container) { + container.addComponent(zookeeperComponent("com.yahoo.vespa.zookeeper.ReconfigurableVespaZooKeeperServer", container)); + container.addComponent(zookeeperComponent("com.yahoo.vespa.zookeeper.Reconfigurer", container)); + container.addComponent(zookeeperComponent("com.yahoo.vespa.zookeeper.VespaZooKeeperAdminImpl", container)); } - private SimpleComponent zookeeperComponent(String idSpec, Container container) { + private static SimpleComponent zookeeperComponent(String idSpec, Container container) { String configId = container.getConfigId(); return new SimpleComponent(new ComponentModel(idSpec, null, "zookeeper-server", configId)); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java index a55d221f8c4..61056856242 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java @@ -1005,8 +1005,7 @@ public class ContentClusterTest extends ContentBaseTest { var builder = new ComponentsConfig.Builder(); c.getConfig(builder); assertEquals(1, new ComponentsConfig(builder).components().stream() - .filter(component -> component.id().equals("clustercontroller-zookeeper-server")) - .map(component -> component.classId().equals(expectedClassName)) + .filter(component -> component.classId().equals(expectedClassName)) .count()); } } @@ -1015,6 +1014,8 @@ public class ContentClusterTest extends ContentBaseTest { public void reconfigurableZookeeperServerForClusterController() { assertZookeeperServerImplementation(false, "com.yahoo.vespa.zookeeper.VespaZooKeeperServerImpl"); assertZookeeperServerImplementation(true, "com.yahoo.vespa.zookeeper.ReconfigurableVespaZooKeeperServer"); + assertZookeeperServerImplementation(true, "com.yahoo.vespa.zookeeper.Reconfigurer"); + assertZookeeperServerImplementation(true, "com.yahoo.vespa.zookeeper.VespaZooKeeperAdminImpl"); } } |