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
commit 2649e6e6a27d932b0c5d9c6efdc46982de6d0b44 Author: xyuanlu <[email protected]> AuthorDate: Tue Sep 26 23:54:37 2023 -0700 Skip one time listener re-register for exists for ZkClient - MetaClient usage. (#2637) --- .../org/apache/helix/metaclient/impl/zk/TestZkMetaClient.java | 10 +++++++++- .../java/org/apache/helix/zookeeper/zkclient/ZkClient.java | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) 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 19f21977b..86edbf8eb 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 @@ -517,12 +517,20 @@ public class TestZkMetaClient extends ZkMetaClientTestBase{ throws Exception { } }; - zkMetaClient.subscribeDataChange(basePath, listener, false); + DirectChildChangeListener cldListener = new DirectChildChangeListener() { + + @Override + public void handleDirectChildChange(String key) throws Exception { + + } + }; + zkMetaClient.subscribeDataChange(basePath, listener, true); zkMetaClient.create(basePath, ""); zkMetaClient.get(basePath); zkMetaClient.exists(basePath); zkMetaClient.getDataAndStat(basePath); zkMetaClient.getDirectChildrenKeys(basePath); + zkMetaClient.subscribeDirectChildChange(basePath, cldListener, true); } } diff --git a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/zkclient/ZkClient.java b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/zkclient/ZkClient.java index 2a06158d0..110587e09 100644 --- a/zookeeper-api/src/main/java/org/apache/helix/zookeeper/zkclient/ZkClient.java +++ b/zookeeper-api/src/main/java/org/apache/helix/zookeeper/zkclient/ZkClient.java @@ -1474,7 +1474,7 @@ public class ZkClient implements Watcher { } public boolean exists(final String path) { - return exists(path, hasChildOrDataListeners(path)); + return exists(path, (!_usePersistWatcher) && hasChildOrDataListeners(path)); } protected boolean exists(final String path, final boolean watch) {
