You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2019/12/20 02:39:54 UTC
[dubbo] branch 2.7.5-release updated: [Dubbo-5336] Fix nacos
registry can not subscribe one interface more than 1 time (#5509)
This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 2.7.5-release
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/2.7.5-release by this push:
new d4c4e43 [Dubbo-5336] Fix nacos registry can not subscribe one interface more than 1 time (#5509)
d4c4e43 is described below
commit d4c4e437882e3992756d1af60b7b69c8a5e74b3f
Author: Mercy Ma <me...@gmail.com>
AuthorDate: Fri Dec 20 10:39:40 2019 +0800
[Dubbo-5336] Fix nacos registry can not subscribe one interface more than 1 time (#5509)
Fixes #5336
---
.../apache/dubbo/registry/nacos/NacosRegistry.java | 36 +++++++++-------------
1 file changed, 14 insertions(+), 22 deletions(-)
diff --git a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
index 894ea52..18f3b73 100644
--- a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
+++ b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/NacosRegistry.java
@@ -27,6 +27,13 @@ import org.apache.dubbo.registry.NotifyListener;
import org.apache.dubbo.registry.Registry;
import org.apache.dubbo.registry.support.FailbackRegistry;
+import com.alibaba.nacos.api.exception.NacosException;
+import com.alibaba.nacos.api.naming.NamingService;
+import com.alibaba.nacos.api.naming.listener.EventListener;
+import com.alibaba.nacos.api.naming.listener.NamingEvent;
+import com.alibaba.nacos.api.naming.pojo.Instance;
+import com.alibaba.nacos.api.naming.pojo.ListView;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -36,20 +43,11 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
-import com.alibaba.nacos.api.exception.NacosException;
-import com.alibaba.nacos.api.naming.NamingService;
-import com.alibaba.nacos.api.naming.listener.EventListener;
-import com.alibaba.nacos.api.naming.listener.NamingEvent;
-import com.alibaba.nacos.api.naming.pojo.Instance;
-import com.alibaba.nacos.api.naming.pojo.ListView;
-
import static java.util.Collections.singleton;
import static org.apache.dubbo.common.constants.CommonConstants.ANY_VALUE;
import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY;
@@ -122,12 +120,9 @@ public class NacosRegistry extends FailbackRegistry {
private final NamingService namingService;
- private final ConcurrentMap<String, EventListener> nacosListeners;
-
public NacosRegistry(URL url, NamingService namingService) {
super(url);
this.namingService = namingService;
- this.nacosListeners = new ConcurrentHashMap<>();
}
@Override
@@ -398,16 +393,13 @@ public class NacosRegistry extends FailbackRegistry {
private void subscribeEventListener(String serviceName, final URL url, final NotifyListener listener)
throws NacosException {
- if (!nacosListeners.containsKey(serviceName)) {
- EventListener eventListener = event -> {
- if (event instanceof NamingEvent) {
- NamingEvent e = (NamingEvent) event;
- notifySubscriber(url, listener, e.getInstances());
- }
- };
- namingService.subscribe(serviceName, eventListener);
- nacosListeners.put(serviceName, eventListener);
- }
+ EventListener eventListener = event -> {
+ if (event instanceof NamingEvent) {
+ NamingEvent e = (NamingEvent) event;
+ notifySubscriber(url, listener, e.getInstances());
+ }
+ };
+ namingService.subscribe(serviceName, eventListener);
}
/**