You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by xy...@apache.org on 2023/04/05 06:36:49 UTC

[helix] branch metaclient updated: MetaClient LockClient Interface

This is an automated email from the ASF dual-hosted git repository.

xyuanlu pushed a commit to branch metaclient
in repository https://gitbox.apache.org/repos/asf/helix.git


The following commit(s) were added to refs/heads/metaclient by this push:
     new 0fc349f34 MetaClient LockClient Interface
0fc349f34 is described below

commit 0fc349f34e3c3092e3e0349392a1691250b6315e
Author: Marcos Rico Peng <55...@users.noreply.github.com>
AuthorDate: Wed Apr 5 02:36:42 2023 -0400

    MetaClient LockClient Interface
---
 .../recipes/lock/LockClientInterface.java          | 59 ++++++++++++++++++++++
 .../helix/metaclient/recipes/lock/LockInfo.java    | 24 +++++++++
 2 files changed, 83 insertions(+)

diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/recipes/lock/LockClientInterface.java b/meta-client/src/main/java/org/apache/helix/metaclient/recipes/lock/LockClientInterface.java
new file mode 100644
index 000000000..81fe6a35a
--- /dev/null
+++ b/meta-client/src/main/java/org/apache/helix/metaclient/recipes/lock/LockClientInterface.java
@@ -0,0 +1,59 @@
+package org.apache.helix.metaclient.recipes.lock;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.helix.metaclient.api.MetaClientInterface;
+
+public interface LockClientInterface {
+  /**
+   * Acquires a lock at key.
+   * @param key key to identify the entry
+   * @param info Metadata of the lock
+   * @param mode EntryMode identifying if the entry will be deleted upon client disconnect
+   *             (Persistent, Ephemeral, or TTL)
+   * @return True if the lock is acquired. Raises exception if fails.
+   */
+  boolean acquireLock(String key, LockInfo info, MetaClientInterface.EntryMode mode);
+
+  /**
+   * Renews lock for a TTL Node.
+   * Will fail if key is an invalid path or isn't of type TTL.
+   * @param key key to identify the entry
+   * @return True if the lock was renewed. Raises exception if fails.
+   */
+  boolean renewTTLLock(String key);
+
+  /**
+   * Releases the lock.
+   * Will fail if key is an invalid path.
+   * @param key key to identify the entry
+   * @return True if the lock was released or the lock had already been released.
+   * Raises exception if fails.
+   */
+  boolean releaseLock(String key);
+
+  /**
+   * Obtains the metadata of a lock (the LockInfo).
+   * @param key key to identify the entry
+   * @return LockInfo object of the node at key. If fails to retrieve, return null.
+   * If other error, will raise exception.
+   */
+  LockInfo retrieveLock(String key);
+}
diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/recipes/lock/LockInfo.java b/meta-client/src/main/java/org/apache/helix/metaclient/recipes/lock/LockInfo.java
new file mode 100644
index 000000000..85006cdf1
--- /dev/null
+++ b/meta-client/src/main/java/org/apache/helix/metaclient/recipes/lock/LockInfo.java
@@ -0,0 +1,24 @@
+package org.apache.helix.metaclient.recipes.lock;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+
+public class LockInfo {
+}