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 resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest