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) {

Reply via email to