aboutsummaryrefslogtreecommitdiffstats
path: root/clustercontroller-core
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@yahooinc.com>2021-12-14 14:35:59 +0100
committerHåkon Hallingstad <hakon@yahooinc.com>2021-12-14 14:35:59 +0100
commit9abcb3b2a5ed0947c24bcc9e4a6cea1f4f389137 (patch)
tree1240847223e7b2c39ad97a4154bbf5ee853acc28 /clustercontroller-core
parent47def8600a5d777a32d9ff1b5e32af66663723d5 (diff)
Failing to find zk system state aborts tick [run-systemtest]
Diffstat (limited to 'clustercontroller-core')
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java2
-rw-r--r--clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java27
2 files changed, 15 insertions, 14 deletions
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java
index a7c909ded95..0c6c773a9bc 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/DatabaseHandler.java
@@ -378,7 +378,7 @@ public class DatabaseHandler {
public int getLatestSystemStateVersion() {
fleetControllerContext.log(logger, Level.FINE, () -> "Retrieving latest system state version.");
synchronized (databaseMonitor) {
- if (database != null && !database.isClosed()) {
+ if (database != null) {
currentlyStored.lastSystemStateVersion = database.retrieveLatestSystemStateVersion();
}
}
diff --git a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java
index 4285ef83782..72c81489351 100644
--- a/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java
+++ b/clustercontroller-core/src/main/java/com/yahoo/vespa/clustercontroller/core/database/ZooKeeperDatabase.java
@@ -222,22 +222,23 @@ public class ZooKeeperDatabase extends Database {
public Integer retrieveLatestSystemStateVersion() {
Stat stat = new Stat();
- try{
- context.log(log, Level.FINE, "Fetching latest cluster state at '%slatestversion'", zooKeeperRoot);
- byte[] data = session.getData(zooKeeperRoot + "latestversion", false, stat);
- lastKnownStateVersionZNodeVersion = stat.getVersion();
- final Integer versionNumber = Integer.valueOf(new String(data, utf8));
- context.log(log, Level.INFO, "Read cluster state version %d from ZooKeeper (znode version %d)", versionNumber, stat.getVersion());
- return versionNumber;
- } catch (InterruptedException e) {
- throw new RuntimeException(e);
- } catch (Exception e) {
- // If we return a default, empty version, writes dependent on this bundle should only
- // succeed if the previous znode version is 0, i.e. not yet created.
+ context.log(log, Level.FINE, "Fetching latest cluster state at '%slatestversion'", zooKeeperRoot);
+ final byte[] data;
+ try {
+ data = session.getData(zooKeeperRoot + "latestversion", false, stat);
+ } catch (KeeperException.NoNodeException e) {
+ // Initial condition: No latest version has ever been written (or ZK state completely wiped!)
lastKnownStateVersionZNodeVersion = 0;
- maybeLogExceptionWarning(e, "Failed to retrieve latest system state version used. Returning null");
+ maybeLogExceptionWarning(e, "No latest system state found");
return null;
+ } catch (InterruptedException | KeeperException e) {
+ throw new RuntimeException("Failed to get " + zooKeeperRoot + "latestversion", e);
}
+
+ lastKnownStateVersionZNodeVersion = stat.getVersion();
+ final Integer versionNumber = Integer.valueOf(new String(data, utf8));
+ context.log(log, Level.INFO, "Read cluster state version %d from ZooKeeper (znode version %d)", versionNumber, stat.getVersion());
+ return versionNumber;
}
public boolean storeWantedStates(Map<Node, NodeState> states) {