I saw that you are running wicket 1.4.2, I'd upgrade to 1.4.12. Thread
detach logic in Wicket has been improved in the releases between iirc.

This is not common enough for us to guess what is wrong. You should go
back in your logs and see what happened in the thread that keeps the
page map locked. If your logging doesn't show anything wrong, at least
try to see what type of request (and to which page/component it was
targeted). This might leed to more information.

Page map locked issues are normally an anxious user double clicking
actions while a server is already processing a request. Often a long
running request will be the cause, and dispatching the logic into a
separate thread helps. But in your situation the thread keeping the
lock is already waiting for a new request, so something went wrong in
that instance.

Martijn

On Tue, Oct 26, 2010 at 5:48 PM, Alec Swan <[email protected]> wrote:
> How do I properly detach pages from request threads? What could have
> caused them not to be properly detached?
>
> I saw this error only once in months, so I don't even know how to
> reproduce it. However, even though it is rare this problem is critical
> because it made the web site unresponsive.
>
> I added an AjaxSelfUpdatingTimerBehavior to one of the pages a while
> ago to make sure that guest sessions do not expire. Could this cause
> the problem?
> this.add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(refreshSeconds)));
>
> Thanks,
>
> Alec
>
> On Tue, Oct 26, 2010 at 3:38 AM, Martijn Dashorst
> <[email protected]> wrote:
>> It appears that your pages have not been properly detached from their
>> request threads. Wicket still thinks that TP-Processor1 has the
>> pagemap locked, whereas that thread is waiting for mod_jk to deliver a
>> new request.
>>
>> I'd look back in the history of what TP-Processor1 has done to get in
>> that state.
>>
>> Martijn
>>
>> On Tue, Oct 26, 2010 at 2:52 AM, Alec Swan <[email protected]> wrote:
>>> Hello,
>>>
>>> Our production server stopped processing AJAX requests today. I looked
>>> in the log files and noticed a "After 1 minute the Pagemap null is
>>> still locked".
>>> The exception stack trace is shown below followed by a dump of the
>>> thread that was blocking the page.
>>>
>>> We are using Wicket 1.4.2, Tomcat 6.0 and Java 6.
>>>
>>> Could anybody help troubleshoot this problem?
>>>
>>> Thanks,
>>>
>>> Alec
>>>
>>> EXCEPTION
>>>
>>> 2010-10-25 21:55:32,501 GMT ERROR [TP-Processor12]
>>> org.apache.wicket.RequestCycle -
>>> org.apache.wicket.WicketRuntimeException: After 1 minute the Pagemap
>>> null is still locked by: Thread[TP-Processor1,5,main], giving up
>>> trying to get the page for path: 4:offersForm:offers:1:editOfferLink
>>>        Begin of stack trace of Thread[TP-Processor1,5,main]
>>>        java.net.SocketInputStream.socketRead0(Native Method)
>>>        java.net.SocketInputStream.read(SocketInputStream.java:129)
>>>        java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>>>        java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
>>>        java.io.BufferedInputStream.read(BufferedInputStream.java:317)
>>>        org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:621)
>>>        org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:559)
>>>        
>>> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:686)
>>>        
>>> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
>>>        
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>>>        java.lang.Thread.run(Thread.java:619)
>>>        End of stack trace of Thread[TP-Processor1,5,main]
>>> org.apache.wicket.protocol.http.request.InvalidUrlException:
>>> org.apache.wicket.WicketRuntimeException: After 1 minute the Pagemap
>>> null is still locked by: Thread[TP-Processor1,5,main], giving up
>>> trying to get the page for path: 4:offersForm:offers:1:editOfferLink
>>>        Begin of stack trace of Thread[TP-Processor1,5,main]
>>>        java.net.SocketInputStream.socketRead0(Native Method)
>>>        java.net.SocketInputStream.read(SocketInputStream.java:129)
>>>        java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>>>        java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
>>>        java.io.BufferedInputStream.read(BufferedInputStream.java:317)
>>>        org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:621)
>>>        org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:559)
>>>        
>>> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:686)
>>>        
>>> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
>>>        
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>>>        java.lang.Thread.run(Thread.java:619)
>>>        End of stack trace of Thread[TP-Processor1,5,main]
>>>        at 
>>> org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:262)
>>>        at org.apache.wicket.RequestCycle.step(RequestCycle.java:1310)
>>>        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
>>>        at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
>>>        at 
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
>>>        at 
>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>        at 
>>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
>>>        at 
>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>        at 
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>>        at 
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>>        at 
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>>        at 
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>        at 
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>>        at 
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
>>>        at 
>>> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
>>>        at 
>>> org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
>>>        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
>>>        at 
>>> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
>>>        at 
>>> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
>>>        at 
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>>>        at java.lang.Thread.run(Thread.java:619)
>>> Caused by: org.apache.wicket.WicketRuntimeException: After 1 minute
>>> the Pagemap null is still locked by: Thread[TP-Processor1,5,main],
>>> giving up trying to get the page for path:
>>> 4:offersForm:offers:1:editOfferLink
>>>        Begin of stack trace of Thread[TP-Processor1,5,main]
>>>        java.net.SocketInputStream.socketRead0(Native Method)
>>>        java.net.SocketInputStream.read(SocketInputStream.java:129)
>>>        java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>>>        java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
>>>        java.io.BufferedInputStream.read(BufferedInputStream.java:317)
>>>        org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:621)
>>>        org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:559)
>>>        
>>> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:686)
>>>        
>>> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
>>>        
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>>>        java.lang.Thread.run(Thread.java:619)
>>>        End of stack trace of Thread[TP-Processor1,5,main]
>>>        at org.apache.wicket.Session.getPage(Session.java:769)
>>>        at 
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.resolveRenderedPage(AbstractRequestCycleProcessor.java:458)
>>>        at 
>>> org.apache.wicket.protocol.http.WebRequestCycleProcessor.resolve(WebRequestCycleProcessor.java:144)
>>>        ... 24 more
>>>
>>>
>>> THREAD DUMP
>>>
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 | "TP-Processor1" daemon
>>> prio=10 tid=0x0a615c00 nid=0x47ed runnable [0x8b45c000]
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |    java.lang.Thread.State: 
>>> RUNNABLE
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> java.net.SocketInputStream.socketRead0(Native Method)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> java.net.SocketInputStream.read(SocketInputStream.java:129)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> java.io.BufferedInputStream.read(BufferedInputStream.java:317)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       - locked <0x995c0d18> (a
>>> java.io.BufferedInputStream)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> org.apache.jk.common.ChannelSocket.read(ChannelSocket.java:621)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> org.apache.jk.common.ChannelSocket.receive(ChannelSocket.java:559)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:686)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
>>> INFO   | jvm 1    | 2010/10/25 18:00:52 |       at
>>> java.lang.Thread.run(Thread.java:619)
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>
>>
>>
>> --
>> Become a Wicket expert, learn from the best: http://wicketinaction.com
>> Apache Wicket 1.4 increases type safety for web applications
>> Get it now: http://www.apache.org/dyn/closer.cgi/wicket/1.4.8
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>



-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to