summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2022-12-12 14:33:13 +0100
committerHarald Musum <musum@yahooinc.com>2022-12-12 14:33:13 +0100
commitf8b3824f733b3d2275975320f7fc4626050462de (patch)
treec2305a9ca0d2c2a116282023b1d550ded70e6a88
parent7963cdb18d24626efaa187a0956f495f2a430649 (diff)
Turn off dynamic reconfiguration for non-hosted config server
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/configserver/ConfigserverCluster.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java2
-rw-r--r--zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java62
-rw-r--r--zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/ReconfigurableVespaZooKeeperServer.java6
-rw-r--r--zookeeper-server/zookeeper-server/src/main/java/com/yahoo/vespa/zookeeper/VespaZooKeeperServerImpl.java2
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);
}