diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2019-12-20 12:38:49 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2019-12-20 12:38:49 +0100 |
commit | c4a29ee378945abe0da60dcf362a045030a17557 (patch) | |
tree | 2f093e4708fc625efb0b655f2adcd2471c778811 /zkfacade | |
parent | d1ef9ba58add96123213fd8fe65a6dcc6ffdb5a6 (diff) |
Cache historic runs (with mock spuport for ZK node versions)
Diffstat (limited to 'zkfacade')
3 files changed, 18 insertions, 5 deletions
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java index 9d74306d3d5..4b421102c2c 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java @@ -333,7 +333,7 @@ public class Curator implements AutoCloseable { */ public Optional<Stat> getStat(Path path) { try { - return Optional.of(framework().checkExists().forPath(path.getAbsolute())); + return Optional.ofNullable(framework().checkExists().forPath(path.getAbsolute())); } catch (KeeperException.NoNodeException e) { return Optional.empty(); diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java index 95d75928988..aabfa95b884 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MemoryFileSystem.java @@ -16,6 +16,7 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; /** * A simple in-memory "file system" useful for Curator caching/mocking. @@ -116,6 +117,8 @@ class MemoryFileSystem extends FileSystem { /** The content of this node, never null. This buffer is effectively immutable. */ private byte[] content; + private final AtomicInteger version = new AtomicInteger(0); + private Map<String, Node> children = Collections.synchronizedMap(new LinkedHashMap<>()); private Node(Node parent, String name) { @@ -132,7 +135,12 @@ class MemoryFileSystem extends FileSystem { public byte[] getContent() { return Arrays.copyOf(content, content.length); } /** Replaces the content of this file */ - public void setContent(byte[] content) { this.content = Arrays.copyOf(content, content.length); } + public void setContent(byte[] content) { + this.content = Arrays.copyOf(content, content.length); + this.version.incrementAndGet(); + } + + public int version() { return version.get(); } /** * Returns the node given by the path. diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java index 3d0fc933e90..f5848a07109 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/mock/MockCurator.java @@ -797,10 +797,15 @@ public class MockCurator extends Curator { @Override public Stat forPath(String path) throws Exception { - if (exists(path, fileSystem.root())) - return new Stat(); // A more accurate mock should set the stat fields - else + try { + Node node = getNode(path, fileSystem.root()); + Stat stat = new Stat(); + stat.setVersion(node.version()); + return stat; + } + catch (KeeperException.NoNodeException e) { return null; + } } @Override |