zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ChaoWang (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ZOOKEEPER-3131) org.apache.zookeeper.server.WatchManager resource leak
Date Tue, 28 Aug 2018 08:47:00 GMT

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-3131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

ChaoWang updated ZOOKEEPER-3131:
--------------------------------
    Description: 
In some cases, the variable _watch2Paths_ in _Class WatchManager_ does not remove the entry,
even if the associated value "HashSet" is empty already. 

The type of key in Map _watch2Paths_ is Watcher, instance of _NettyServerCnxn._ If it is
not removed when the associated set of paths is empty, it will cause the memory increases
little by little, and OutOfMemoryError triggered finally. 

 

{color:#FF0000}*Possible Solution:*{color}

In the following function, the logic should be added to remove the entry.

org.apache.zookeeper.server.WatchManager#removeWatcher(java.lang.String, org.apache.zookeeper.Watcher)

if (paths.isEmpty())

{ watch2Paths.remove(watcher); }

For the following function as well:

org.apache.zookeeper.server.WatchManager#triggerWatch(java.lang.String, org.apache.zookeeper.Watcher.Event.EventType,
java.util.Set<org.apache.zookeeper.Watcher>)

 

Please confirm this issue?

  was:
In some cases, the variable _watch2Paths_ in _Class WatchManager_ does not remove the entry,
even if the associated value "HashSet" is empty already. 

The type of key in Map _watch2Paths_ is Watcher, instance of _NettyServerCnxn._ If it is
not removed when the associated set of paths is empty, it will cause the memory increases
little by little, and OutOfMemoryError triggered finally. 

 

In the following function, the logic should be added to remove the entry.

org.apache.zookeeper.server.WatchManager#removeWatcher(java.lang.String, org.apache.zookeeper.Watcher)

if (paths.isEmpty()) {
 watch2Paths.remove(watcher);
}

For the following function as well:

org.apache.zookeeper.server.WatchManager#triggerWatch(java.lang.String, org.apache.zookeeper.Watcher.Event.EventType,
java.util.Set<org.apache.zookeeper.Watcher>)

 

Please confirm this issue?


> org.apache.zookeeper.server.WatchManager resource leak
> ------------------------------------------------------
>
>                 Key: ZOOKEEPER-3131
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3131
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: server
>    Affects Versions: 3.5.3, 3.5.4
>         Environment: -Xmx512m 
>            Reporter: ChaoWang
>            Priority: Major
>
> In some cases, the variable _watch2Paths_ in _Class WatchManager_ does not remove the
entry, even if the associated value "HashSet" is empty already. 
> The type of key in Map _watch2Paths_ is Watcher, instance of _NettyServerCnxn._ If
it is not removed when the associated set of paths is empty, it will cause the memory increases
little by little, and OutOfMemoryError triggered finally. 
>  
> {color:#FF0000}*Possible Solution:*{color}
> In the following function, the logic should be added to remove the entry.
> org.apache.zookeeper.server.WatchManager#removeWatcher(java.lang.String, org.apache.zookeeper.Watcher)
> if (paths.isEmpty())
> { watch2Paths.remove(watcher); }
> For the following function as well:
> org.apache.zookeeper.server.WatchManager#triggerWatch(java.lang.String, org.apache.zookeeper.Watcher.Event.EventType,
java.util.Set<org.apache.zookeeper.Watcher>)
>  
> Please confirm this issue?



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message