[
https://issues.jboss.org/browse/JGRP-1655?page=com.atlassian.jira.plugin....
]
Manuel Dominguez Sarmiento commented on JGRP-1655:
--------------------------------------------------
Looking at FlowControl.java, I see that the ignore_thread ThreadLocal is used in the
following methods:
- up(Event) -> correct usage, ThreadLocal is removed in finally block
- up(MessageBatch) -> correct usage, ThreadLocal is removed in finally block
- down(Event) -> incorrect usage, since ignore_thread.get() invokes initialValue()
which stores the ThreadLocal value, however there is no guarantee that
ThreadLocal.remove() will be invoked on this same thread.
- stop() -> ineffective usage, since ThreadLocal.remove() will only remove the
ThreadLocal value for the shutdown thread that invoked this method. However, because of
down() above, many other threads may have a value for the ThreadLocal.
This causes memory leaks on shutdown, since the ignore_thread ThreadLocal is a local
subclass of ThreadLocal, which causes a ClassLoader reference for the webapp to be held
after shutdown, because down() does not properly clean up after itself and ThreadLocals
remain.
ThreadLocal leaks discovered after enabling Tomcat 7 ThreadLocal
detection listener
-----------------------------------------------------------------------------------
Key: JGRP-1655
URL:
https://issues.jboss.org/browse/JGRP-1655
Project: JGroups
Issue Type: Bug
Affects Versions: 3.3.2
Reporter: Manuel Dominguez Sarmiento
Assignee: Bela Ban
Fix For: 3.4
After enabling Tomcat 7's org.apache.catalina.core.ThreadLocalLeakPreventionListener,
we found this while undeploying our webapp:
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[java.lang.ThreadLocal] (value [java.lang.ThreadLocal@6ae3209a]) and a value of type
[org.jgroups.protocols.TP.ProtocolAdapter] (value [locks (21)]) but failed to remove it
when the web application was stopped. Threads are going to be renewed over time to try and
avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
SEVERE: The web application [/cms] created a ThreadLocal with key of type
[org.jgroups.protocols.FlowControl$1] (value
[org.jgroups.protocols.FlowControl$1@536c4bc7]) and a value of type [java.lang.Boolean]
(value [false]) but failed to remove it when the web application was stopped. Threads are
going to be renewed over time to try and avoid a probable memory leak.
Jul 12, 2013 11:19:04 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira