diff options
author | jonmv <venstad@gmail.com> | 2022-10-07 10:48:00 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-10-10 12:33:57 +0200 |
commit | 990a561813f0ff23e13c4571d00c2315c866497f (patch) | |
tree | edc81433e1fd5cc20d9c0777f64638dab8091973 /zkfacade | |
parent | 40ef644020d4f1e1c4092e0903752b342f14adc2 (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.java | 3 | ||||
-rw-r--r-- | zkfacade/src/main/java/com/yahoo/vespa/curator/CuratorWrapper.java | 43 |
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(); } }; + } + +} |