diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-02-16 08:08:55 +0100 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2021-02-16 08:08:55 +0100 |
commit | 778c8932da8394fa545b612c7cbcac2b015d8ddf (patch) | |
tree | 0237388aeb46fa47647387ab647f0e2eb1de9d3c /zookeeper-server | |
parent | 52c2c3ea8f9c9e4d160508deb6aa6ab6489615eb (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.java | 8 |
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"); } |