summaryrefslogtreecommitdiffstats
path: root/zkfacade/src
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-11-16 11:02:53 +0100
committerMartin Polden <mpolden@mpolden.no>2020-11-23 13:40:51 +0100
commitf9f322671c7115eeeedb64d09305834575751d07 (patch)
tree57f22113f088c7746d390b4336154cb24bb8f195 /zkfacade/src
parent12d0b8124c989e36fa31236adf66ceb18f9165af (diff)
Add VespaCurator interface
Diffstat (limited to 'zkfacade/src')
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/Curator.java3
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java19
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java10
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/curator/package-info.java2
4 files changed, 32 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 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;