aboutsummaryrefslogtreecommitdiffstats
path: root/configserver
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2021-07-08 20:52:33 +0200
committerHarald Musum <musum@verizonmedia.com>2021-07-08 20:52:33 +0200
commit9b3803ea2373e92bba908967f1dc17e11846eb23 (patch)
tree66707ac373923c6e6de6ad611b151dd2d12247d6 /configserver
parent6422dedc3926d604e071c087e0e8263f4c8f9390 (diff)
Read session status may fail
When deleting expired sessions we delete many sessions at once, watchers react to sessions being removed, but since this takes some time handling a session being deleted may happen while other sessions are deleted. So make sure to handle the case where a session disappears while trying to read its status
Diffstat (limited to 'configserver')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java4
1 files changed, 2 insertions, 2 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
index 24813891eba..12fcdb6b87d 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionZooKeeperClient.java
@@ -91,8 +91,8 @@ public class SessionZooKeeperClient {
public Session.Status readStatus() {
try {
- String data = configCurator.getData(sessionStatusPath.getAbsolute());
- return Session.Status.parse(data);
+ Optional<byte[]> data = curator.getData(sessionStatusPath);
+ return data.map(d -> Session.Status.parse(Utf8.toString(d))).orElse(Session.Status.NONE);
} catch (Exception e) {
log.log(Level.INFO, "Failed to read session status at " + sessionStatusPath.getAbsolute() +
", will assume session has been removed: ", e);