This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.0 by this push:
new 7eabceeb94 fixes #10541, save subscribed dataIds for unsubscription.
(#10573)
7eabceeb94 is described below
commit 7eabceeb94fc227457099368492050e86e497a66
Author: ken.lj <[email protected]>
AuthorDate: Fri Sep 9 11:25:08 2022 +0800
fixes #10541, save subscribed dataIds for unsubscription. (#10573)
---
.../java/org/apache/dubbo/registry/nacos/NacosRegistry.java | 10 +++++++++-
.../dubbo/registry/nacos/util/NacosInstanceManageUtil.java | 4 ++++
2 files changed, 13 insertions(+), 1 deletion(-)
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 021102ced2..d2f749c357 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
@@ -214,6 +214,7 @@ public class NacosRegistry extends FailbackRegistry {
NacosInstanceManageUtil.setCorrespondingServiceNames(serviceName, serviceNames);
}
}
+
doSubscribe(url, nacosAggregateListener, serviceNames);
}
@@ -277,11 +278,18 @@ public class NacosRegistry extends FailbackRegistry {
shutdownServiceNamesLookup();
} else {
Map<NotifyListener, NacosAggregateListener> listenerMap =
originToAggregateListener.get(url);
+ if (listenerMap == null) {
+ logger.warn(String.format("No aggregate listener found for url
%s, this service might have already been unsubscribed.", url));
+ return;
+ }
NacosAggregateListener nacosAggregateListener =
listenerMap.remove(listener);
if (nacosAggregateListener != null) {
- Set<String> serviceNames = getServiceNames(url,
nacosAggregateListener);
+ Set<String> serviceNames =
nacosAggregateListener.getServiceNames();
try {
doUnsubscribe(url, nacosAggregateListener, serviceNames);
+ for (String serviceName : serviceNames) {
+
NacosInstanceManageUtil.removeCorrespondingServiceNames(serviceName);
+ }
} catch (NacosException e) {
logger.error("Failed to unsubscribe " + url + " to nacos "
+ getUrl() + ", cause: " + e.getMessage(), e);
}
diff --git
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java
index cb0179f27a..125f22a776 100644
---
a/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java
+++
b/dubbo-registry/dubbo-registry-nacos/src/main/java/org/apache/dubbo/registry/nacos/util/NacosInstanceManageUtil.java
@@ -52,6 +52,10 @@ public class NacosInstanceManageUtil {
SERVICE_INSTANCE_LIST_MAP.put(serviceName, instanceList);
}
+ public static Set<String> removeCorrespondingServiceNames(String
serviceName) {
+ return CORRESPONDING_SERVICE_NAMES_MAP.remove(serviceName);
+ }
+
public static List<Instance> getAllCorrespondingServiceInstanceList(String
serviceName) {
if (!CORRESPONDING_SERVICE_NAMES_MAP.containsKey(serviceName)) {
return Lists.newArrayList();