Yanniiii commented on a change in pull request #8508:
URL: https://github.com/apache/dubbo/pull/8508#discussion_r690924387



##########
File path: 
dubbo-registry/dubbo-registry-multiple/src/main/java/org/apache/dubbo/registry/multiple/MultipleRegistry.java
##########
@@ -200,9 +195,27 @@ public void unsubscribe(URL url, NotifyListener listener) {
                 urls.addAll(tmpUrls);
             }
         }
+        urls = removeDuplicate(urls);
         return urls;
     }
 
+    protected static List<URL> removeDuplicate(List<URL> urls) {
+        Set<List<String>> set = new HashSet<>();
+        List<URL> dedupList = new ArrayList<>();
+        for (URL url : urls) {
+            List<String> tmp = new ArrayList<>();
+            tmp.add(url.getAddress());
+            tmp.add(url.getProtocol());
+            tmp.add(url.getParameter("group"));
+            tmp.add(url.getParameter("version"));
+            if (!set.contains(tmp)) {
+                set.add(tmp);
+                dedupList.add(url);
+            }

Review comment:
       And I found that If I put the deduplication code in 
MultipleNotifyListenerWrapper.notify(), the code cannot pass the unit test in 
MultipleRegistry2S2RTest:212, because the parameters of NotifyListener.notify() 
are deduplicated,  not the same as the parameters declared by the test.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to