From 7c3c3476049c0629b79ad85af4ac583f68178910 Mon Sep 17 00:00:00 2001 From: jonmv Date: Thu, 13 Jul 2023 15:21:09 +0200 Subject: Handle ZK node deleted after stat read, while updating cache --- .../yahoo/vespa/hosted/provision/persistence/CuratorDb.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'node-repository') diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDb.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDb.java index 92faacbca23..c388273b1a6 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDb.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/CuratorDb.java @@ -258,12 +258,10 @@ public class CuratorDb { Pair cached = cachedNodes.getIfPresent(path); if (cached != null && cached.getFirst().equals(stat)) return cached.getSecond(); cachedNodes.invalidate(path); - try { - return cachedNodes.get(path, () -> new Pair<>(stat, read(path, nodeSerializer::fromJson).get())).getSecond(); - } - catch (ExecutionException e) { - throw new UncheckedExecutionException(e.getCause()); - } + Optional node = session.getData(path).filter(data -> data.length > 0).map(nodeSerializer::fromJson); + if (node.isEmpty()) return null; + cachedNodes.put(path, new Pair<>(stat, node.get())); + return node.get(); }); } -- cgit v1.2.3