Thanks, good tip. I'll do that, and I'm also going to send in a replacement copy for PageAccessSynchronizer that still has the one minute delay, but then if it fails, it forces the lock anyway and swallows the exception - hopefully that will solve my lock ups until I can find the cause:
locks.put(pageId, lock); // force it - temporary fix only logger.error("failed to acquire lock would have thrown: ", /*throw*/ new CouldNotLockPageException(pageId, thread.getName(), timeout)); Thanks, -- Jim. On Mon, May 23, 2011 at 9:14 AM, Martin Grigorov <mgrigo...@apache.org>wrote: > 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/> >