diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2022-12-13 09:37:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-13 09:37:08 +0100 |
commit | edf5ace6b73cbfbfacffe302e6347d8abce7a368 (patch) | |
tree | e8b82ff94f2ad7037dacaf4e37390a032334cba1 | |
parent | 6e427de43a7aa0cbf23b4503e86878582b37fb52 (diff) | |
parent | f8b3824f733b3d2275975320f7fc4626050462de (diff) |
Merge pull request #25215 from vespa-engine/hmusum/turn-zk-off-dynamicic-reconfiguration-for-non-hosted
Turn off dynamic reconfiguration for non-hosted config server [run-systemtest]
7 files changed, 47 insertions, 34 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 5d60cec0679..69accef2fe4 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 @@ -65,7 +65,8 @@ public class ClusterControllerContainer extends Container implements "com.yahoo.vespa.clustercontroller.apps.clustercontroller.StateRestApiV2Handler", "/cluster/v2/*", CLUSTERCONTROLLER_BUNDLE); - addComponent(new AccessLogComponent(containerCluster().orElse(null), AccessLogComponent.AccessLogType.jsonAccessLog, + addComponent(new AccessLogComponent(containerCluster().orElse(null), + AccessLogComponent.AccessLogType.jsonAccessLog, deployState.featureFlags().logFileCompressionAlgorithm("zstd"), Optional.of("controller"), deployState.isHosted())); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java index ec1776730b8..c0182c2f5ac 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java @@ -31,7 +31,6 @@ import com.yahoo.vespa.config.search.core.OnnxModelsConfig; import com.yahoo.vespa.config.search.core.RankingConstantsConfig; import com.yahoo.vespa.config.search.core.RankingExpressionsConfig; import com.yahoo.vespa.model.AbstractService; -import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainer; import com.yahoo.vespa.model.container.component.BindingPattern; import com.yahoo.vespa.model.container.component.Component; @@ -39,7 +38,6 @@ import com.yahoo.vespa.model.container.component.Handler; import com.yahoo.vespa.model.container.component.SystemBindingPattern; import com.yahoo.vespa.model.container.configserver.ConfigserverCluster; import com.yahoo.vespa.model.utils.FileSender; - import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -316,8 +314,8 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat ! previousHosts.contains(container.getHostName())) .retired(container.isRetired()); builder.server(serverBuilder); - builder.dynamicReconfiguration(true); } + builder.dynamicReconfiguration(true); } @Override diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java index a165b4862b5..8f257110a04 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java @@ -84,6 +84,8 @@ public class ConfigserverCluster extends AbstractConfigProducer if (options.hostedVespa().orElse(false)) { builder.vespaTlsConfigFile(Defaults.getDefaults().underVespaHome("var/zookeeper/conf/tls.conf.json")); } + + builder.dynamicReconfiguration(options.hostedVespa().orElse(false)); } @Override diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java index 0ad4a4b8294..af42e30422b 100644 --- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java +++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java @@ -98,7 +98,7 @@ public class Configurator { sb.append("serverCnxnFactory=org.apache.zookeeper.server.VespaNettyServerCnxnFactory").append("\n"); sb.append("quorumListenOnAllIPs=true").append("\n"); sb.append("standaloneEnabled=false").append("\n"); - sb.append("reconfigEnabled=true").append("\n"); + sb.append("reconfigEnabled=").append(config.dynamicReconfiguration()).append("\n"); sb.append("skipACL=yes").append("\n"); ensureThisServerIsRepresented(config.myid(), config.server()); config.server().forEach(server -> sb.append(serverSpec(server, server.joining())).append("\n")); diff --git a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java index 6dcdc76a593..5d0031d5b55 100644 --- a/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java +++ b/zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java @@ -54,26 +54,21 @@ public class ConfiguratorTest { } @Test - public void config_is_written_correctly_when_one_server() { + public void config_is_written_correctly_with_one_server() { ZookeeperServerConfig.Builder builder = createConfigBuilderForSingleHost(cfgFile, idFile); new Configurator(builder.build()).writeConfigToDisk(VespaTlsConfig.tlsDisabled()); - validateConfigFileSingleHost(cfgFile); + validateConfigFileSingleHost(cfgFile, false); validateIdFile(idFile, "0\n"); } @Test - public void config_is_written_correctly_when_multiple_servers() { - ZookeeperServerConfig.Builder builder = new ZookeeperServerConfig.Builder(); - builder.zooKeeperConfigFile(cfgFile.getAbsolutePath()); - builder.server(newServer(0, "foo", 123, 321, false)); - builder.server(newServer(1, "bar", 234, 432, false)); - builder.server(newServer(2, "baz", 345, 543, true)); - builder.myidFile(idFile.getAbsolutePath()); - builder.myid(1); - builder.tickTime(1234); - new Configurator(builder.build()).writeConfigToDisk(VespaTlsConfig.tlsDisabled()); - validateConfigFileMultipleHosts(cfgFile); - validateIdFile(idFile, "1\n"); + public void config_is_written_correctly_with_multiple_servers() { + three_config_servers(false); + } + + @Test + public void config_is_written_correctly_with_multiple_servers_on_hosted_vespa() { + three_config_servers(true); } @Test @@ -81,7 +76,7 @@ public class ConfiguratorTest { ZookeeperServerConfig.Builder builder = createConfigBuilderForSingleHost(cfgFile, idFile); TlsContext tlsContext = createTlsContext(); new Configurator(builder.build()).writeConfigToDisk(new VespaTlsConfig(tlsContext, MixedMode.TLS_CLIENT_MIXED_SERVER)); - validateConfigFileTlsWithMixedMode(cfgFile); + validateConfigFileTlsWithMixedMode(cfgFile, false); } @Test @@ -89,7 +84,7 @@ public class ConfiguratorTest { ZookeeperServerConfig.Builder builder = createConfigBuilderForSingleHost(cfgFile, idFile); TlsContext tlsContext = createTlsContext(); new Configurator(builder.build()).writeConfigToDisk(new VespaTlsConfig(tlsContext, MixedMode.DISABLED)); - validateConfigFileTlsWithoutMixedMode(cfgFile); + validateConfigFileTlsWithoutMixedMode(cfgFile, false); } @Test(expected = RuntimeException.class) @@ -122,6 +117,21 @@ public class ConfiguratorTest { assertEquals("" + max_buffer, System.getProperty(ZOOKEEPER_JUTE_MAX_BUFFER)); } + private void three_config_servers(boolean hosted) { + ZookeeperServerConfig.Builder builder = new ZookeeperServerConfig.Builder(); + builder.zooKeeperConfigFile(cfgFile.getAbsolutePath()); + builder.server(newServer(0, "foo", 123, 321, false)); + builder.server(newServer(1, "bar", 234, 432, false)); + builder.server(newServer(2, "baz", 345, 543, true)); + builder.myidFile(idFile.getAbsolutePath()); + builder.myid(1); + builder.tickTime(1234); + builder.dynamicReconfiguration(hosted); + new Configurator(builder.build()).writeConfigToDisk(VespaTlsConfig.tlsDisabled()); + validateConfigFileMultipleHosts(cfgFile, hosted); + validateIdFile(idFile, "1\n"); + } + private ZookeeperServerConfig.Builder createConfigBuilderForSingleHost(File cfgFile, File idFile) { ZookeeperServerConfig.Builder builder = new ZookeeperServerConfig.Builder(); builder.zooKeeperConfigFile(cfgFile.getAbsolutePath()); @@ -147,7 +157,7 @@ public class ConfiguratorTest { assertEquals(expected, actual); } - private String commonConfig() { + private String commonConfig(boolean hosted) { return "tickTime=1234\n" + "initLimit=20\n" + "syncLimit=15\n" + @@ -161,13 +171,13 @@ public class ConfiguratorTest { "serverCnxnFactory=org.apache.zookeeper.server.VespaNettyServerCnxnFactory\n" + "quorumListenOnAllIPs=true\n" + "standaloneEnabled=false\n" + - "reconfigEnabled=true\n" + + "reconfigEnabled=" + hosted + "\n" + "skipACL=yes\n"; } - private void validateConfigFileSingleHost(File cfgFile) { + private void validateConfigFileSingleHost(File cfgFile, boolean hosted) { String expected = - commonConfig() + + commonConfig(hosted) + "server.0=foo:321:123;2181\n" + "sslQuorum=false\n" + "portUnification=false\n" + @@ -191,9 +201,9 @@ public class ConfiguratorTest { "ssl.clientAuth=NEED\n"; } - private void validateConfigFileMultipleHosts(File cfgFile) { + private void validateConfigFileMultipleHosts(File cfgFile, boolean hosted) { String expected = - commonConfig() + + commonConfig(hosted) + "server.0=foo:321:123;2181\n" + "server.1=bar:432:234;2181\n" + "server.2=baz:543:345:observer;2181\n" + @@ -204,9 +214,9 @@ public class ConfiguratorTest { } - private void validateConfigFileTlsWithMixedMode(File cfgFile) { + private void validateConfigFileTlsWithMixedMode(File cfgFile, boolean hosted) { String expected = - commonConfig() + + commonConfig(hosted) + "server.0=foo:321:123;2181\n" + "sslQuorum=true\n" + "portUnification=true\n" + @@ -216,9 +226,9 @@ public class ConfiguratorTest { validateConfigFile(cfgFile, expected); } - private void validateConfigFileTlsWithoutMixedMode(File cfgFile) { + private void validateConfigFileTlsWithoutMixedMode(File cfgFile, boolean hosted) { String expected = - commonConfig() + + commonConfig(hosted) + "server.0=foo:321:123;2181\n" + "sslQuorum=true\n" + "portUnification=false\n" + diff --git a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java index e94110af2fb..a4c34416b4a 100644 --- a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java +++ b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java @@ -1,13 +1,12 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.zookeeper; -import com.yahoo.component.annotation.Inject; +import ai.vespa.validation.Validation; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.component.AbstractComponent; - +import com.yahoo.component.annotation.Inject; import java.nio.file.Path; import java.time.Duration; -import java.util.concurrent.atomic.AtomicReference; /** * Starts or reconfigures zookeeper cluster. @@ -22,6 +21,7 @@ public class ReconfigurableVespaZooKeeperServer extends AbstractComponent implem @Inject public ReconfigurableVespaZooKeeperServer(Reconfigurer reconfigurer, ZookeeperServerConfig zookeeperServerConfig) { + Validation.require(true, zookeeperServerConfig.dynamicReconfiguration(), "dynamicReconfiguration must be true"); peer = reconfigurer.startOrReconfigure(zookeeperServerConfig, this, () -> peer = new VespaQuorumPeer()); } diff --git a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java index 48f95d28910..104af272bd3 100644 --- a/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java +++ b/zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.zookeeper; +import ai.vespa.validation.Validation; import com.yahoo.component.annotation.Inject; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.component.AbstractComponent; @@ -19,6 +20,7 @@ public class VespaZooKeeperServerImpl extends AbstractComponent implements Vespa @Inject public VespaZooKeeperServerImpl(ZookeeperServerConfig zookeeperServerConfig) { + Validation.require(false, zookeeperServerConfig.dynamicReconfiguration(), "dynamicReconfiguration must be false"); this.peer = new VespaQuorumPeer(); this.runner = new ZooKeeperRunner(zookeeperServerConfig, this); } |