[ https://issues.apache.org/jira/browse/ZOOKEEPER-3131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Han resolved ZOOKEEPER-3131. ------------------------------------ Resolution: Fixed Fix Version/s: 3.6.0 Issue resolved by pull request 612 [https://github.com/apache/zookeeper/pull/612] > 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, 3.6.0 > Environment: -Xmx512m > Reporter: ChaoWang > Priority: Major > Labels: pull-request-available > Fix For: 3.6.0 > > Time Spent: 2h > Remaining Estimate: 0h > > 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)