summaryrefslogtreecommitdiffstats
path: root/zookeeper-server
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-12-06 13:23:52 +0100
committerMartin Polden <mpolden@mpolden.no>2020-12-06 13:33:40 +0100
commit3a088f804e94990a391b50013ef2da4810030ce4 (patch)
tree12a1a292ef983a34a82c9b3178bbed493d6066bc /zookeeper-server
parent42a3fcd59502219934eb48942181b632cf24ffdd (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.java12
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())