Wicket 1.5 locks access to the same page instance by more than one thread at a time. You can set log level to DEBUG for org.apache.wicket.page.PageAccessSynchronizer class and see which thread acquires the lock for page with version 0 and never releases it.
Instead of going to previous version of Wicket better go to a newer one. On Mon, May 23, 2011 at 3:38 PM, Jim Pinkham <pinkh...@gmail.com> wrote: > I'm using wicket 1.5 RC3 and just started getting some total system lockups > recently in prod that I can't understand. > > Once it gets into this state, the only remedy is to restart tomcat. > Unfortunately, I haven't yet figured out how to reproduce this, so > meanwhile > I thought I'd ask if someone could please help me understand how page > locking works in general and what I should be looking for. > > When I think of locking I usually think of threading, so not sure if it > matters, but I do start one a thread for email sending with the Application > thread local set for it also (because I manage data sources thru the app so > it was easier that way). I could try refactoring that, but without a > reproducable test case, it's just a guess at this point. My other plan > would be to revert to some older wicket version, but again, just a guess. > > Here is the stack trace; nothing unusual precedes it. (This is just a user > trying to visit the home page). The only thing I notice is that these > issues all seem to be using the PageParameter version of the page > constructor. > > tomcat stuff omitted.. > ... > Caused by: java.lang.reflect.InvocationTargetException > at sun.reflect.GeneratedConstructorAccessor9.newInstance(Unknown Source) > at > > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > at > > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:153) > ... 27 more > Caused by: org.apache.wicket.page.CouldNotLockPageException: Could not lock > page 0. Attempt lasted 1 minute > at > > org.apache.wicket.page.PageAccessSynchronizer.lockPage(PageAccessSynchronizer.java:138) > at > > org.apache.wicket.page.PageAccessSynchronizer$1.touchPage(PageAccessSynchronizer.java:194) > at org.apache.wicket.Page.dirty(Page.java:327) > at org.apache.wicket.Page.init(Page.java:779) > at org.apache.wicket.Page.<init>(Page.java:223) > at org.apache.wicket.Page.<init>(Page.java:202) > at org.apache.wicket.markup.html.WebPage.<init>(WebPage.java:99) > at > > com.togetherauction.ui.AbstractAuctionPage.<init>(AbstractAuctionPage.java:31) > at com.togetherauction.ui.HomePage.<init>(HomePage.java:33) > ... 31 more > WARN - PageAccessSynchronizer - http-80-15 failed to acquire lock to > page 0, attempted for 1 minute out of allowed 1 minute > ERROR - DefaultExceptionMapper - Unexpected error occurred > org.apache.wicket.WicketRuntimeException: Can't instantiate page using > constructor public > > com.togetherauction.ui.HomePage(org.apache.wicket.request.mapper.parameter.PageParameters) > and argument > at > > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:173) > at > > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:91) > at > > org.apache.wicket.session.DefaultPageFactory.newPage(DefaultPageFactory.java:43) > at org.apache.wicket.DefaultMapperContext.newPageInstance > > I could use a hand here - anyone want to give me some advise? > > Thanks, > -- Jim > http://togetherauction.com > -- Martin Grigorov jWeekend Training, Consulting, Development http://jWeekend.com <http://jweekend.com/>