aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-01-04 13:58:31 +0100
committerHarald Musum <musum@verizonmedia.com>2021-01-04 13:58:31 +0100
commit48ed00f737b95edd59dc3ea1d786d103d782296b (patch)
treed771467860c867d91be6ba24b5de3a7a402db21e /config-model
parent2daff17d7e3f7341c8efa4cf9cced09234b17a5e (diff)
Make sure to setup all needed components for reconfigurable zookeeper server in cluster controller
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java22
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java14
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java5
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");
}
}