You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by GitBox <gi...@apache.org> on 2021/11/03 14:33:14 UTC

[GitHub] [dubbo] wuwen5 opened a new issue #9202: NacosRegistry memory leak

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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org


[GitHub] [dubbo] AlbumenJ closed issue #9202: NacosRegistry memory leak

Posted by GitBox <gi...@apache.org>.
AlbumenJ closed issue #9202:
URL: https://github.com/apache/dubbo/issues/9202


   


-- 
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: notifications-unsubscribe@dubbo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@dubbo.apache.org
For additional commands, e-mail: notifications-help@dubbo.apache.org