From 345e58fc598b38da1b51d21568e25c938385f103 Mon Sep 17 00:00:00 2001 From: BigXin0109 <1064730540@qq.com> Date: Tue, 18 Jul 2023 18:46:45 +0800 Subject: [PATCH] fix: CuratorWatch unwatch , childListener is null (#12742) --- .../curator/CuratorZookeeperClient.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java index 5935286219..dc4a5d3fab 100644 --- a/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java +++ b/dubbo-remoting/dubbo-remoting-zookeeper/src/main/java/org/apache/dubbo/remoting/zookeeper/curator/CuratorZookeeperClient.java @@ -51,6 +51,7 @@ import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; @@ -481,13 +482,14 @@ public class CuratorZookeeperClient extends AbstractZookeeperClient { - try { - childListener.childChanged(path, client.getChildren().usingWatcher(CuratorWatcherImpl.this).forPath(path)); - } catch (Exception e) { - logger.warn(REGISTRY_ZOOKEEPER_EXCEPTION, "", "", "client get children error", e); - } - }; + Runnable task = () -> Optional.ofNullable(childListener) + .ifPresent(c -> { + try { + c.childChanged(path, client.getChildren().usingWatcher(CuratorWatcherImpl.this).forPath(path)); + } catch (Exception e) { + logger.warn(REGISTRY_ZOOKEEPER_EXCEPTION, "", "", "client get children error", e); + } + }); initExecutorIfNecessary(); if (!closed && CURATOR_WATCHER_EXECUTOR_SERVICE != null) { CURATOR_WATCHER_EXECUTOR_SERVICE.execute(task);