diff options
author | HÃ¥kon Hallingstad <hakon@yahooinc.com> | 2021-12-14 15:37:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-12-14 15:37:49 +0100 |
commit | 3e9eaf5246237c835c417843b734dea31ba9f623 (patch) | |
tree | 0b97c8fda7c2e1309581065f164c340976855364 | |
parent | 1929189922923d522550115aad826218da52de62 (diff) | |
parent | 9abcb3b2a5ed0947c24bcc9e4a6cea1f4f389137 (diff) |
Merge pull request #20508 from vespa-engine/hakonhall/failing-to-find-zk-system-state-aborts-tick-run-systemtest
Failing to find zk system state aborts tick [run-systemtest]
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) { |