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

albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new a299844  when first getServiceAppMapping, reduce one time network 
transport. (#7298)
a299844 is described below

commit a299844f54c933e2368305ce16fa896c5c990302
Author: 赵延 <[email protected]>
AuthorDate: Wed Apr 7 19:06:14 2021 +0800

    when first getServiceAppMapping, reduce one time network transport. (#7298)
---
 .../store/zookeeper/ZookeeperMetadataReport.java      | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git 
a/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
 
b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
index 52fd4a8..9793eb9 100644
--- 
a/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
+++ 
b/dubbo-metadata/dubbo-metadata-report-zookeeper/src/main/java/org/apache/dubbo/metadata/store/zookeeper/ZookeeperMetadataReport.java
@@ -159,20 +159,24 @@ public class ZookeeperMetadataReport extends 
AbstractMetadataReport {
     public Set<String> getServiceAppMapping(String serviceKey, MappingListener 
listener, URL url) {
         Set<String>  appNameSet = new HashSet<>();
         String path = toRootDir() + serviceKey;
-        List<String> appNameList = zkClient.getChildren(path);
-        if (!CollectionUtils.isEmpty(appNameList)) {
-            appNameSet.addAll(appNameList);
-        }
+
+        List<String> appNameList;
 
         if (null == listenerMap.get(path)) {
             zkClient.create(path, false);
-            addServiceMappingListener(path, serviceKey, listener);
+            appNameList = addServiceMappingListener(path, serviceKey, 
listener);
+        } else {
+            appNameList = zkClient.getChildren(path);
+        }
+
+        if (!CollectionUtils.isEmpty(appNameList)) {
+            appNameSet.addAll(appNameList);
         }
 
         return appNameSet;
     }
 
-    private void addServiceMappingListener(String path, String serviceKey, 
MappingListener listener) {
+    private List<String> addServiceMappingListener(String path, String 
serviceKey, MappingListener listener) {
         ChildListener zkListener = new ChildListener() {
             @Override
             public void childChanged(String path, List<String> children) {
@@ -182,7 +186,8 @@ public class ZookeeperMetadataReport extends 
AbstractMetadataReport {
                 listener.onEvent(event);
             }
         };
-        zkClient.addChildListener(path, zkListener);
+        List<String> childNodes = zkClient.addChildListener(path, zkListener);
         listenerMap.put(path, zkListener);
+        return childNodes;
     }
 }

Reply via email to