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]

Reply via email to