[ 
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.copyoninheritthreadlo...@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.unsynchronizedappenderbas...@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

        
_______________________________________________
logback-dev mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-dev

Reply via email to