On 04/04/2011 10:02 AM, Mattias Jiderhamn wrote:
> Scott Ferguson wrote (2011-04-04 18:47):
>> On 04/04/2011 12:43 AM, Mattias Jiderhamn wrote:
>>> While evaluating Resin 4.0.16 we are seeing something that makes me
>>> really concerned. It appears as if after a redeploy there can be two
>>> instances of our main app running.
>>>
>>> I was made aware of this by noticing that timed servlets (<run-at
>>> ... />) were having concurrency issues and logging the same event
>>> twice within the same second.
>>> This made me add some extra logging in a <load-on-startup/> servlet,
>>> and I can actually see that at some reploys, the same web app is
>>> initialized twice - in different, concurrent threads and different
>>> classloaders.
>>> For example one instance may be initialized by
>>> Thread[http://*:8080-776,5,main] and at the same time (give or take
>>> a few seconds) another one by Thread[resin-366,5,main].
>>>
>>> I cannot deliberately recreate it by simply redeploying (which makes
>>> it less likely to be a configuration issue). But it happens about
>>> daily on our test server; possibly issuing requests on a session in
>>> the app while redeploying is a factor.
>>>
>>> We are not using versioning.
>>> dependency-check-interval is set to 20 seconds.
>>> The "extra" app does not appear in the admin console.
>>>
>>> How can we figure out what is going on here???
>>>
>>
>> Are you using version="true" and/or versioned web-apps? With
>> versioned web-apps, Resin is supposed to have two versions running at
>> the same time while it migrates sessions from the old version to the
>> new version.
>
> As stated above, we are not using versioning.
> (And if we we're, should the old version be re-initialized when
> deploying a new version...?)
Do you have logs for these events? The WebApp start/stop should be
logged at the info level and be in the jvm-default.log.
I can't yet see how this is happening, though I have found a related
issue with 503s.
The main thing I'd be looking for is:
{thread1} WebApp[/foo] start
{thread2} WebApp[/foo] stop
{thread2} WebApp[/foo] start
{threadX} WebApp[/foo] stop
VS
{thread1} WebApp[/foo] start
{thread2} WebApp[/foo] start
...
In other words, an actual simultaneous start compared to an erroneous
restart.
-- Scott
_______________________________________________
resin-interest mailing list
[email protected]
http://maillist.caucho.com/mailman/listinfo/resin-interest