diff options
5 files changed, 48 insertions, 3 deletions
diff --git a/zkfacade/abi-spec.json b/zkfacade/abi-spec.json index 4aa8775940e..e0de2622149 100644 --- a/zkfacade/abi-spec.json +++ b/zkfacade/abi-spec.json @@ -60,6 +60,7 @@ "com.yahoo.vespa.curator.Curator": { "superClass": "java.lang.Object", "interfaces": [ + "com.yahoo.vespa.curator.api.VespaCurator", "java.lang.AutoCloseable" ], "attributes": [ @@ -90,7 +91,8 @@ "public org.apache.curator.framework.CuratorFramework framework()", "public void close()", "public java.lang.String zooKeeperEnsembleConnectionSpec()", - "public int zooKeeperEnsembleCount()" + "public int zooKeeperEnsembleCount()", + "public bridge synthetic java.lang.AutoCloseable lock(com.yahoo.path.Path, java.time.Duration)" ], "fields": [ "protected final org.apache.curator.RetryPolicy retryPolicy" @@ -111,5 +113,18 @@ "public void close()" ], "fields": [] + }, + "com.yahoo.vespa.curator.api.VespaCurator": { + "superClass": "java.lang.Object", + "interfaces": [], + "attributes": [ + "public", + "interface", + "abstract" + ], + "methods": [ + "public abstract java.lang.AutoCloseable lock(com.yahoo.path.Path, java.time.Duration)" + ], + "fields": [] } }
\ No newline at end of file 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 5966ef77877..30c4c624def 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java @@ -7,6 +7,7 @@ import com.yahoo.cloud.config.CuratorConfig; import com.yahoo.io.IOUtils; import com.yahoo.path.Path; import com.yahoo.text.Utf8; +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; @@ -48,7 +49,7 @@ import java.util.logging.Logger; * @author vegardh * @author bratseth */ -public class Curator implements AutoCloseable { +public class Curator implements VespaCurator, 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/api/VespaCurator.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java new file mode 100644 index 00000000000..0b6fa55719e --- /dev/null +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java @@ -0,0 +1,19 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.curator.api; + +import com.yahoo.path.Path; + +import java.time.Duration; + +/** + * A client for a ZooKeeper cluster running inside Vespa. Applications that want to use ZooKeeper can inject this in + * their code. + * + * @author mpolden + */ +public interface VespaCurator { + + /** Create and acquire a re-entrant lock in given path. This blocks until the lock is acquired or timeout elapses. */ + AutoCloseable lock(Path path, Duration timeout); + +} diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java new file mode 100644 index 00000000000..679dd3750cb --- /dev/null +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java @@ -0,0 +1,10 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +/** + * @author mpolden + */ +@PublicApi +@ExportPackage +package com.yahoo.vespa.curator.api; + +import com.yahoo.api.annotations.PublicApi; +import com.yahoo.osgi.annotation.ExportPackage; diff --git a/zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java b/zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java index 07f0924cb31..777da5988eb 100644 --- a/zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java +++ b/zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java @@ -1,6 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. @ExportPackage -@PublicApi +@PublicApi // TODO: Revoke this on Vespa 8. package com.yahoo.vespa.curator; import com.yahoo.api.annotations.PublicApi; import com.yahoo.osgi.annotation.ExportPackage; |