summaryrefslogtreecommitdiffstats
path: root/zkfacade
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-10-07 10:48:00 +0200
committerjonmv <venstad@gmail.com>2022-10-10 12:33:57 +0200
commit990a561813f0ff23e13c4571d00c2315c866497f (patch)
treeedc81433e1fd5cc20d9c0777f64638dab8091973 /zkfacade
parent40ef644020d4f1e1c4092e0903752b342f14adc2 (diff)
Move VespaCurator implementation to CuratorWrapper, with /user/ namespace
Diffstat (limited to 'zkfacade')
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java3
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorWrapper.java43
2 files changed, 44 insertions, 2 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 e096eee8a97..134450edd9a 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java
@@ -6,7 +6,6 @@ import com.yahoo.component.AbstractComponent;
import com.yahoo.component.annotation.Inject;
import com.yahoo.concurrent.DaemonThreadFactory;
import com.yahoo.path.Path;
-import com.yahoo.vespa.curator.api.VespaCurator;
import com.yahoo.vespa.curator.recipes.CuratorCounter;
import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.zookeeper.VespaZooKeeperServer;
@@ -59,7 +58,7 @@ import java.util.logging.Logger;
* @author vegardh
* @author bratseth
*/
-public class Curator extends AbstractComponent implements VespaCurator, AutoCloseable {
+public class Curator extends AbstractComponent implements AutoCloseable {
private static final Logger LOG = Logger.getLogger(Curator.class.getName());
private static final File ZK_CLIENT_CONFIG_FILE = new File(Defaults.getDefaults().underVespaHome("conf/zookeeper/zookeeper-client.cfg"));
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorWrapper.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorWrapper.java
new file mode 100644
index 00000000000..64c1a023a91
--- /dev/null
+++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorWrapper.java
@@ -0,0 +1,43 @@
+package com.yahoo.vespa.curator;
+
+import com.yahoo.component.AbstractComponent;
+import com.yahoo.component.annotation.Inject;
+import com.yahoo.path.Path;
+import com.yahoo.vespa.curator.api.VespaCurator;
+import org.apache.curator.framework.state.ConnectionState;
+import org.apache.zookeeper.KeeperException.BadVersionException;
+import org.apache.zookeeper.data.Stat;
+
+import java.time.Clock;
+import java.time.Duration;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
+
+/**
+ * Implementation of {@link VespaCurator} which delegates to a {@link Curator}.
+ * This prefixes all paths with {@code "/user"}, to ensure separation with system ZK usage.
+ *
+ * @author jonmv
+ */
+public class CuratorWrapper extends AbstractComponent implements VespaCurator {
+
+ static final Path userRoot = Path.fromString("user");
+
+ private final Curator curator;
+
+ @Inject
+ public CuratorWrapper(Curator curator) {
+ this.curator = curator;
+ }
+
+ @Override
+ public AutoCloseable lock(Path path, Duration timeout) {
+ // TODO jonmv: clear up
+ Lock current, old = curator.lock(path, timeout);
+ try { current = curator.lock(userRoot.append(path), timeout); }
+ catch (Throwable t) { old.close(); throw t; }
+ return () -> { try(old) { current.close(); } };
+ }
+
+}