wuwen5 opened a new issue #9202:
URL: https://github.com/apache/dubbo/issues/9202


   <!-- If you need to report a security issue please visit 
https://github.com/apache/dubbo/security/policy -->
   
   - [x] I have searched the [issues](https://github.com/apache/dubbo/issues) 
of this repository and believe that this is not a duplicate.
   
   ### Environment
   
   * Dubbo version: 2.7.x、3.0.x
   
   ### Steps to reproduce this issue
   
   1. start dubbo admin (nacos registry)
   
   The ```EventListener``` instance has created countless times by the 
scheduled task(```scheduledExecutorService```) and cached in the 
```InstancesChangeNotifier#listenerMap```(Nacos)  
   
   - NacosRegistry
   ```
   private void subscribeEventListener(String serviceName, final URL url, final 
NotifyListener listener)
           throws NacosException {
           EventListener eventListener = new 
RegistryChildListenerImpl(serviceName, url, listener);
           namingService.subscribe(serviceName,
               getUrl().getGroup(Constants.DEFAULT_GROUP),
               eventListener);
       }
   ```
   
   - InstancesChangeNotifier
   ```
   private final Map<String, ConcurrentHashSet<EventListener>> listenerMap = 
new ConcurrentHashMap<String, ConcurrentHashSet<EventListener>>();
   
   public void registerListener(String serviceName, String clusters, 
EventListener listener) {
           String key = ServiceInfo.getKey(serviceName, clusters);
           ConcurrentHashSet<EventListener> eventListeners = 
listenerMap.get(key);
           if (eventListeners == null) {
               synchronized (lock) {
                   eventListeners = listenerMap.get(key);
                   if (eventListeners == null) {
                       eventListeners = new ConcurrentHashSet<EventListener>();
                       listenerMap.put(key, eventListeners);
                   }
               }
           }
           eventListeners.add(listener);
       }
   ```
   The ```namingService.subscribe```  is finally called to the 
```InstancesChangeNotifier#registerListener``` , so 
   eventListener cached in  eventListeners.
   
   
![image](https://user-images.githubusercontent.com/5037807/140080041-f617bda2-0f48-4669-8e3d-2184a6eb9a75.png)
   
   
   


-- 
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