summaryrefslogtreecommitdiffstats
path: root/zookeeper-server
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-02-16 08:08:55 +0100
committerHarald Musum <musum@verizonmedia.com>2021-02-16 08:08:55 +0100
commit778c8932da8394fa545b612c7cbcac2b015d8ddf (patch)
tree0237388aeb46fa47647387ab647f0e2eb1de9d3c /zookeeper-server
parent52c2c3ea8f9c9e4d160508deb6aa6ab6489615eb (diff)
Shutdown and die if we are going down to 1 ZooKeeper server
Reconfiguration will not work, since the old servers will be shutdown
Diffstat (limited to 'zookeeper-server')
-rw-r--r--zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
index f967f56b04f..712e37be452 100644
--- a/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
+++ b/zookeeper-server/zookeeper-server-common/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java
@@ -81,6 +81,10 @@ public class Reconfigurer extends AbstractComponent {
private void reconfigure(ZookeeperServerConfig newConfig, VespaZooKeeperServer server) {
Instant reconfigTriggered = Instant.now();
+ // No point in trying to reconfigure if there is only one server in the new ensemble,
+ // the others will be shutdown or are about to be shutdown
+ if (newConfig.server().size() == 1) shutdownAndDie(server, Duration.ZERO);
+
List<String> newServers = difference(servers(newConfig), servers(activeConfig));
String leavingServers = String.join(",", difference(serverIds(activeConfig), serverIds(newConfig)));
String joiningServers = String.join(",", newServers);
@@ -116,6 +120,10 @@ public class Reconfigurer extends AbstractComponent {
}
// Reconfiguration failed
+ shutdownAndDie(server, reconfigTimeout);
+ }
+
+ private void shutdownAndDie(VespaZooKeeperServer server, Duration reconfigTimeout) {
server.shutdown();
Process.logAndDie("Reconfiguration did not complete within timeout " + reconfigTimeout + ". Forcing shutdown");
}