In support of this latest theory is the fact that YourKit shows two GC
roots for the HttpRequest. Apart from the
com.caucho.server.port.TcpConnection._request reference, the request is
a root itself by being on the stack of a thread (http--8080-...).
This could indicate a thread currently waiting in the
com.caucho.server.port.TcpConnection.run() method, where the
ServerRequest of the parent is also a local variable.

Even if the request is reused, I believe the Invocation or the
ClassLoader of the invocation needs to be reset somehow, to release the
webapp classloader.
I can help try out a proposed fix to see if it solves the problem (=
feel free to mail me off list). I might even give it a shot myself.

/Mattias


Mattias Jiderhamn wrote (2008-11-04 23:28):
> Scott Ferguson wrote (2008-11-04 23:16):
>   
>> On Nov 4, 2008, at 2:10 PM, Mattias Jiderhamn wrote:
>>
>>     
>>> Scott wrote:
>>>       
>>>> Did you build from resin/branches/3.1 or the trunk? 
>>>>         
>>> 3.1 branch.
>>>
>>> Now I'm browsing around the
>>> com.caucho.server.port.TcpConnection._request which is never
>>> explicitly release, but I realize it's getting a bit too late on this
>>> side of the Atlantic ocean so I better continue tomorrow unless you
>>> find the source of the problem until then.
>>>       
>> That field is never released.  The TcpConnection, Request and Response
>> triple are reused together.
>>     
> Wouldn't that be the problem then?
> As long as there is one such triplet that has not been reused since the
> webapp was reloaded, the request will point to (the Invocatoin that will
> point to) the classloader of the old version of the app?
>
> (That could also explain why the problem has seemed to appear more often
> on low load test sites than on production instances.)
>
>  /Mattias
>   

_______________________________________________
resin-interest mailing list
resin-interest@caucho.com
http://maillist.caucho.com/mailman/listinfo/resin-interest

Reply via email to