You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "ChaoWang (JIRA)" <ji...@apache.org> on 2018/08/28 08:34:00 UTC
[jira] [Created] (ZOOKEEPER-3132)
org.apache.zookeeper.server.WatchManager resource leak
ChaoWang created ZOOKEEPER-3132:
-----------------------------------
Summary: org.apache.zookeeper.server.WatchManager resource leak
Key: ZOOKEEPER-3132
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3132
Project: ZooKeeper
Issue Type: Bug
Components: server
Affects Versions: 3.5.4, 3.5.3
Environment: -Xmx512m
Reporter: ChaoWang
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?
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)