[logback-dev] [JIRA] Commented: (LBCLASSIC-183) Tomcat reports SEVERE ThreadLocal issues upon shutdown
Carey Evans (JIRA)
noreply-jira at qos.ch
Fri Oct 15 01:00:51 CEST 2010
[ http://jira.qos.ch/browse/LBCLASSIC-183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=11859#action_11859 ]
Carey Evans commented on LBCLASSIC-183:
---------------------------------------
A fix for this warning is to change guard.set(false) on line 98 of UnsynchronizedAppenderBase.java to guard.remove().
However, this may make things slower since (on Java 6) it causes rehashing of the ThreadLocalMap twice every time doAppend() is called. A better solution may be to not override ThreadLocal.initialValue(), so that the ThreadLocalMap keys don't refer indirectly to the web application's ClassLoader, checking whether guard.get() returns null on line 70 instead: Boolean.TRUE.equals(guard.get()).
Since Boolean comes from the system ClassLoader, the ThreadLocalMap values never refer to the web application's ClassLoader.
> Tomcat reports SEVERE ThreadLocal issues upon shutdown
> ------------------------------------------------------
>
> Key: LBCLASSIC-183
> URL: http://jira.qos.ch/browse/LBCLASSIC-183
> Project: logback-classic
> Issue Type: Bug
> Affects Versions: 0.9.18
> Environment: Tomcat 6.0.24, JDK 6, Windows or Solaris
> Reporter: Anthony Whitford
> Assignee: Ceki Gulcu
>
> I have a webapp that uses Logback, deployed on a Tomcat instance. Upon shutdown, Tomcat reports this and doesn't completely shut down:
> SEVERE: A web application created a ThreadLocal with key of type [org.slf4j.impl.CopyOnInheritThreadLocal] (value [org.slf4j.impl.CopyOnInheritThreadLocal at 1bb35
> b]) and a value of type [null] (value [null]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
> Feb 3, 2010 10:49:22 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
> SEVERE: A web application created a ThreadLocal with key of type [null] (value [ch.qos.logback.core.UnsynchronizedAppenderBase$1 at 10e2558]) and a value of type [java.lang.Boolean] (value [false]) but failed to remove it when the web application was stopped. To prevent a memory leak, the ThreadLocal has been forcibly removed.
> Is LogBack leaking resources?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the logback-dev
mailing list