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 20683d48f MetaClient Container Node Implementation (#2377)
20683d48f is described below
commit 20683d48fe3d06170df7213dd06a737ab7ee9e36
Author: Marcos Rico Peng <[email protected]>
AuthorDate: Wed Feb 15 18:36:33 2023 -0500
MetaClient Container Node Implementation (#2377)
Implementation of Container Nodes in ZkMetaClient
---
.../helix/metaclient/impl/zk/ZkMetaClient.java | 13 +------------
.../metaclient/impl/zk/util/ZkMetaClientUtil.java | 2 +-
.../helix/metaclient/impl/zk/TestZkMetaClient.java | 22 ++++++++++++++++++++++
3 files changed, 24 insertions(+), 13 deletions(-)
diff --git
a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/ZkMetaClient.java
b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/ZkMetaClient.java
index e042368d3..875eb6a50 100644
---
a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/ZkMetaClient.java
+++
b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/ZkMetaClient.java
@@ -77,23 +77,12 @@ public class ZkMetaClient<T> implements
MetaClientInterface<T>, AutoCloseable {
public void create(String key, Object data, MetaClientInterface.EntryMode
mode) {
try{
- _zkClient.create(key, data, metaClientModeToZkMode(mode));
+ _zkClient.create(key, data,
ZkMetaClientUtil.convertMetaClientMode(mode));
} catch (ZkException | KeeperException e) {
throw new MetaClientException(e);
}
}
- private static CreateMode metaClientModeToZkMode(EntryMode mode) throws
KeeperException {
- switch (mode) {
- case PERSISTENT:
- return CreateMode.PERSISTENT;
- case EPHEMERAL:
- return CreateMode.EPHEMERAL;
- default:
- return CreateMode.PERSISTENT;
- }
- }
-
@Override
public void set(String key, T data, int version) {
try {
diff --git
a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/util/ZkMetaClientUtil.java
b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/util/ZkMetaClientUtil.java
index cd625f169..a733ba4fb 100644
---
a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/util/ZkMetaClientUtil.java
+++
b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/util/ZkMetaClientUtil.java
@@ -110,7 +110,7 @@ public class ZkMetaClientUtil {
return OpMapHolder.OPMAP;
}
- private static CreateMode
convertMetaClientMode(MetaClientInterface.EntryMode entryMode) throws
KeeperException {
+ public static CreateMode convertMetaClientMode(MetaClientInterface.EntryMode
entryMode) throws KeeperException {
switch (entryMode) {
case PERSISTENT:
return CreateMode.PERSISTENT;
diff --git
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java
index 6cccfae72..70a7afccd 100644
---
a/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java
+++
b/meta-client/src/test/java/org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java
@@ -51,6 +51,7 @@ import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import static
org.apache.helix.metaclient.api.MetaClientInterface.EntryMode.CONTAINER;
import static
org.apache.helix.metaclient.api.MetaClientInterface.EntryMode.PERSISTENT;
@@ -67,8 +68,19 @@ public class TestZkMetaClient {
private ZkServer _zkServer;
+ /**
+ * Creates local Zk Server
+ * Note: Cannot test container / TTL node end to end behavior as
+ * the zk server setup doesn't allow for that. To enable this, zk server
+ * setup must invoke ContainerManager.java. However, the actual
+ * behavior has been verified to work on native ZK Client.
+ * TODO: Modify zk server setup to include ContainerManager.
+ * This can be done through ZooKeeperServerMain.java or
+ * LeaderZooKeeperServer.java.
+ */
@BeforeClass
public void prepare() {
+ System.setProperty("zookeeper.extendedTypesEnabled", "true");
// start local zookeeper server
_zkServer = startZkServer(ZK_ADDR);
}
@@ -94,6 +106,16 @@ public class TestZkMetaClient {
}
}
+ @Test
+ public void testCreateContainer() {
+ final String key = "/TestZkMetaClient_testCreateContainer";
+ try (ZkMetaClient<String> zkMetaClient = createZkMetaClient()) {
+ zkMetaClient.connect();
+ zkMetaClient.create(key, ENTRY_STRING_VALUE, CONTAINER);
+ Assert.assertNotNull(zkMetaClient.exists(key));
+ }
+ }
+
@Test
public void testGet() {
final String key = "/TestZkMetaClient_testGet";