diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-12-11 11:41:15 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-12-11 12:33:54 +0100 |
commit | 540ead4289358e47cc2c5244540b2b62e8c83e2d (patch) | |
tree | 61e13bf6cec70a7ad425f51e894e75bcc1f8d5fe /zookeeper-server | |
parent | 947351ab33cf47c20c2617eec8269ea9c6a859a7 (diff) |
Make joining server an observer in initial config
Diffstat (limited to 'zookeeper-server')
2 files changed, 20 insertions, 10 deletions
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 e535f627f00..5f8ebf29ccd 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 @@ -147,8 +147,17 @@ public class Configurator { .append(":") .append(server.quorumPort()) .append(":") - .append(server.electionPort()) - .append(";") + .append(server.electionPort()); + if (server.joining()) { + // Servers that are joining an existing cluster must be marked as observers. Note that this will NOT + // actually make the server an observer, but prevent it from forming an ensemble independently of the + // existing cluster. + // + // See https://zookeeper.apache.org/doc/r3.6.2/zookeeperReconfig.html#sc_reconfig_modifying + sb.append(":") + .append("observer"); + } + sb.append(";") .append(clientPort) .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 731682ba253..0f43fb45d9d 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 @@ -65,9 +65,9 @@ public class ConfiguratorTest { 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)); - builder.server(newServer(1, "bar", 234, 432)); - builder.server(newServer(2, "baz", 345, 543)); + 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); new Configurator(builder.build()).writeConfigToDisk(Optional.empty()); @@ -112,8 +112,8 @@ public class ConfiguratorTest { public void require_that_this_id_must_be_present_amongst_servers() { ZookeeperServerConfig.Builder builder = new ZookeeperServerConfig.Builder(); builder.zooKeeperConfigFile(cfgFile.getAbsolutePath()); - builder.server(newServer(1, "bar", 234, 432)); - builder.server(newServer(2, "baz", 345, 543)); + builder.server(newServer(1, "bar", 234, 432, false)); + builder.server(newServer(2, "baz", 345, 543, false)); builder.myid(0); new Configurator(builder.build()).writeConfigToDisk(Optional.empty()); } @@ -142,18 +142,19 @@ public class ConfiguratorTest { ZookeeperServerConfig.Builder builder = new ZookeeperServerConfig.Builder(); builder.zooKeeperConfigFile(cfgFile.getAbsolutePath()); builder.myidFile(idFile.getAbsolutePath()); - builder.server(newServer(0, "foo", 123, 321)); + builder.server(newServer(0, "foo", 123, 321, false)); builder.myid(0); builder.jksKeyStoreFile(jksKeyStoreFile.getAbsolutePath()); return builder; } - private ZookeeperServerConfig.Server.Builder newServer(int id, String hostName, int electionPort, int quorumPort) { + private ZookeeperServerConfig.Server.Builder newServer(int id, String hostName, int electionPort, int quorumPort, boolean joining) { ZookeeperServerConfig.Server.Builder builder = new ZookeeperServerConfig.Server.Builder(); builder.id(id); builder.hostname(hostName); builder.electionPort(electionPort); builder.quorumPort(quorumPort); + builder.joining(joining); return builder; } @@ -235,7 +236,7 @@ public class ConfiguratorTest { commonConfig() + "server.0=foo:321:123;2181\n" + "server.1=bar:432:234;2181\n" + - "server.2=baz:543:345;2181\n" + + "server.2=baz:543:345:observer;2181\n" + commonTlsQuorumConfig() + "sslQuorum=false\n" + "portUnification=false\n" + |