From f9f322671c7115eeeedb64d09305834575751d07 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Mon, 16 Nov 2020 11:02:53 +0100 Subject: Add VespaCurator interface --- .../main/java/com/yahoo/vespa/curator/Curator.java | 3 ++- .../com/yahoo/vespa/curator/api/VespaCurator.java | 19 +++++++++++++++++++ .../com/yahoo/vespa/curator/api/package-info.java | 10 ++++++++++ .../java/com/yahoo/vespa/curator/package-info.java | 2 +- 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 zkfacade/src/main/java/com/yahoo/vespa/curator/api/VespaCurator.java create mode 100644 zkfacade/src/main/java/com/yahoo/vespa/curator/api/package-info.java (limited to 'zkfacade/src') 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; -- cgit v1.2.3