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/>
>

Reply via email to