tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Malcolm Warren <malc...@villeinitalia.com>
Subject Re: Threadlocal problem
Date Tue, 02 Feb 2010 14:23:52 GMT
Thanks for your very helpful answers.

I shall gradually cut out reflectionToString: unfortunately I've used it 
quite a lot, because it was useful!

Thanks again,
Malcolm Warren


Cyrille Le Clerc ha scritto:
> Hello,
>
> Your threadLocal variable is created by the reflectionToString feature
> of Jakarta Commons Lang ToStringBuilder (1).
>
> This thread local variable seems to be used to prevent infinite
> recursion when ToStringBuilder traverse the objects.
>
> I didn't see yet a way (servlet filter, etc) to cleanup this ThreadLocal.
>
> Cyrille
> --
> Cyrille Le Clerc
> cleclerc@xebia.fr
>
> (1) http://fisheye6.atlassian.com/browse/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java?r=594386#l136
>
> On Tue, Feb 2, 2010 at 2:44 PM, Mark Thomas <markt@apache.org> wrote:
>   
>> On 02/02/2010 13:31, Malcolm Warren wrote:
>>     
>>> SEVERE: A web application created a ThreadLocal with key of type
>>> [org.apache.commons.lang.builder.ToStringStyle$1] (value
>>> [org.apache.commons.lang.builder.ToStringStyle$1@66a37d72]) and a value
>>> of type [java.util.HashSet] (value [[]]) but failed to remove it when
>>> the web application was stopped. To prevent a memory leak, the
>>> ThreadLocal has been forcibly removed.
>>>
>>>
>>>
>>> I get this message with every hot redeploy, which is a little worrying.
>>> Anybody know what it's about?
>>>       
>> The message says it all. Something created a ThreadLocal but didn't
>> clean it up. Tomcat cleaned it up to prevent a memory leak.
>>
>>     
>>> This started with the latest Tomcat 6 version: 6.0.24.
>>> I'm pleased with this new version because it also pointed out politely
>>> that I hadn't closed a thread I'd opened.
>>>       
>> This is all part of the new memory leak protection added for 6.0.24. It
>> is good to hear that people are finding it useful.
>>
>>     
>>> I've fixed my Thread but I still get the message shown at the beginning
>>> of this email.
>>>
>>> I don't use ThreadLocal in my code at all, so it's Tomcat who's creating
>>> this ThreadLocal for some reason, but since it's not mine it's something
>>> I can't do much about, presumably.
>>>       
>> It isn't Tomcat's (Tomcat doesn't ship with commons-lang) so I am pretty
>> sure it is yours. Chances are it isn't something you are doing directly
>> but maybe something a library you are using is doing?
>>
>> If a library is adding a ThreadLocal to a request processing thread it
>> *must* remove it before the request completes to avoid a potential
>> memory leak. If it doesn't, I would argue that is a bug in the library.
>> At a stretch, if the library provides a mechanism to clean these up on
>> web app shutdown that is just about OK but that could would need to be
>> carefully coded.
>>
>> Mark
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>     
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>
>   


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message