diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-07-08 20:52:33 +0200 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2021-07-08 20:52:33 +0200 |
commit | 9b3803ea2373e92bba908967f1dc17e11846eb23 (patch) | |
tree | 66707ac373923c6e6de6ad611b151dd2d12247d6 /configserver | |
parent | 6422dedc3926d604e071c087e0e8263f4c8f9390 (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.java | 4 |
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); |