summaryrefslogtreecommitdiffstats
path: root/zookeeper-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-12-11 11:41:15 +0100
committerMartin Polden <mpolden@mpolden.no>2020-12-11 12:33:54 +0100
commit540ead4289358e47cc2c5244540b2b62e8c83e2d (patch)
tree61e13bf6cec70a7ad425f51e894e75bcc1f8d5fe /zookeeper-server
parent947351ab33cf47c20c2617eec8269ea9c6a859a7 (diff)
Make joining server an observer in initial config
Diffstat (limited to 'zookeeper-server')
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Configurator.java13
-rw-r--r--zookeeper-server/zookeeper-server-common/src/test/java/com/yahoo/vespa/zookeeper/ConfiguratorTest.java17
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" +