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 2021/10/31 07:13:58 UTC

[dubbo] branch 3.0 updated: Destroy ServiceInstancesChangedListener (#9161)

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 e25cf97  Destroy ServiceInstancesChangedListener (#9161)
e25cf97 is described below

commit e25cf97a3a938db760b906cd3856596e9017b9f7
Author: Gong Dewei <ky...@qq.com>
AuthorDate: Sun Oct 31 15:13:43 2021 +0800

    Destroy ServiceInstancesChangedListener (#9161)
---
 .../org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java  | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
index 043f583..079653c 100644
--- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
+++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/ServiceDiscoveryRegistry.java
@@ -260,6 +260,7 @@ public class ServiceDiscoveryRegistry extends FailbackRegistry {
                 instancesChangedListener.removeListener(protocolServiceKey, listener);
                 if (!instancesChangedListener.hasListeners()) {
                     serviceListeners.remove(serviceNamesKey);
+                    instancesChangedListener.destroy();
                 }
             }
         }
@@ -280,6 +281,11 @@ public class ServiceDiscoveryRegistry extends FailbackRegistry {
         registryManager.removeDestroyedRegistry(this);
         // stop ServiceDiscovery
         execute(serviceDiscovery::destroy);
+        // destroy all event listener
+        for (ServiceInstancesChangedListener listener : serviceListeners.values()) {
+            listener.destroy();
+        }
+        serviceListeners.clear();
     }
 
     @Override