aboutsummaryrefslogtreecommitdiffstats
path: root/zkfacade
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
parent12d0b8124c989e36fa31236adf66ceb18f9165af (diff)
Add VespaCurator interface
Diffstat (limited to 'zkfacade')
-rw-r--r--zkfacade/abi-spec.json17
-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
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;