aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java')
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java18
1 files changed, 13 insertions, 5 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java
index eeddf2fab75..0dd26026c5d 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/MasterElectionHandler.java
@@ -55,6 +55,10 @@ public class MasterElectionHandler implements MasterInterface {
}
public void setUsingZooKeeper(boolean usingZK) {
+ if (!usingZooKeeper && usingZK) {
+ // Reset any shortcuts taken by non-ZK election logic.
+ resetElectionProgress();
+ }
usingZooKeeper = usingZK;
}
@@ -224,15 +228,19 @@ public class MasterElectionHandler implements MasterInterface {
}
public void lostDatabaseConnection() {
- if (totalCount > 1) {
+ if (totalCount > 1 || usingZooKeeper) {
log.log(Level.INFO, "Cluster controller " + index + ": Clearing master data as we lost connection on node " + index);
- masterData = null;
- masterCandidate = null;
- followers = 0;
- nextMasterData = null;
+ resetElectionProgress();
}
}
+ private void resetElectionProgress() {
+ masterData = null;
+ masterCandidate = null;
+ followers = 0;
+ nextMasterData = null;
+ }
+
public void writeHtmlState(StringBuilder sb, int stateGatherCount) {
sb.append("<h2>Master state</h2>\n");
Integer master = getMaster();