diff options
author | Martin Polden <mpolden@mpolden.no> | 2020-12-06 13:23:52 +0100 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2020-12-06 13:33:40 +0100 |
commit | 3a088f804e94990a391b50013ef2da4810030ce4 (patch) | |
tree | 12a1a292ef983a34a82c9b3178bbed493d6066bc /zookeeper-server | |
parent | 42a3fcd59502219934eb48942181b632cf24ffdd (diff) |
Retry reconfig on ConnectionLoss
Diffstat (limited to 'zookeeper-server')
-rw-r--r-- | zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java index 101d9aae982..be0ec535740 100644 --- a/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java +++ b/zookeeper-server/zookeeper-server-3.5.6/src/main/java/com/yahoo/vespa/zookeeper/Reconfigurer.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.zookeeper; import com.google.inject.Inject; import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.component.AbstractComponent; +import com.yahoo.yolean.Exceptions; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; @@ -122,10 +123,10 @@ public class Reconfigurer extends AbstractComponent { Duration.between(reconfigStarted, reconfigEnded)); reconfigured = true; } catch (KeeperException e) { - if ( ! (e instanceof KeeperException.ReconfigInProgress)) + if (!retryOn(e)) throw new RuntimeException(e); - log.log(Level.INFO, "Reconfiguration failed due to colliding with another reconfig. Retrying in " + - retryWait); + log.log(Level.INFO, "Reconfiguration failed. Retrying in " + retryWait + ": " + + Exceptions.toMessageString(e)); sleeper.accept(retryWait); } } @@ -138,6 +139,11 @@ public class Reconfigurer extends AbstractComponent { return reconfigInterval.multipliedBy(activeConfig.myid()); } + private static boolean retryOn(KeeperException e) { + return e instanceof KeeperException.ReconfigInProgress || + e instanceof KeeperException.ConnectionLossException; + } + private static String connectionSpec(ZookeeperServerConfig config) { return config.server().stream() .map(server -> server.hostname() + ":" + config.clientPort()) |