[ https://issues.apache.org/jira/browse/WICKET-5727?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14166909#comment-14166909 ]
Martin Grigorov commented on WICKET-5727: ----------------------------------------- You should disable the link and show an indicator that it may take a while. > PageAccessSynchronizer$PageLock.waitForRelease problem with opening pdf files > ----------------------------------------------------------------------------- > > Key: WICKET-5727 > URL: https://issues.apache.org/jira/browse/WICKET-5727 > Project: Wicket > Issue Type: Bug > Affects Versions: 6.17.0 > Reporter: Ann Baert > Assignee: Jesse Long > Attachments: PdfLinkQuickstart.zip, jetty-threads.jpg > > > When opening a pdf file and it takes a while, the user can keep clicking on > the link, so the request is send again. When the user keep's clicking on the > link we receive a lot of requests on the Page that is locked. And the number > of used threads in jetty are increasing quickly even with an application > crash as a result. So we are looking for a solution to freeze the page when > the user has clicked on the link as long as the pdf is not done. > I've made a quickstart with a link with a sleeping time before showing to > simulate this problem. > The stacktrace: > Stacktrace: at java.lang.Object.wait(Native Method) at > org.apache.wicket.page.PageAccessSynchronizer$PageLock.waitForRelease(PageAccessSynchronizer.java:333) > at > org.apache.wicket.page.PageAccessSynchronizer.lockPage(PageAccessSynchronizer.java:117) > at > org.apache.wicket.page.PageAccessSynchronizer$2.getPage(PageAccessSynchronizer.java:233) > at > org.apache.wicket.DefaultMapperContext.getPageInstance(DefaultMapperContext.java:148) > at > org.apache.wicket.core.request.handler.PageProvider.getStoredPage(PageProvider.java:296) > at > org.apache.wicket.core.request.handler.PageProvider.resolvePageInstance(PageProvider.java:261) > at > org.apache.wicket.core.request.handler.PageProvider.getPageInstance(PageProvider.java:166) > at > org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.getPage(ListenerInterfaceRequestHandler.java:96) > at > org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:157) > at > org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:862) > at > org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64) > at > org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261) > at > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218) > at > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289) > at > org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259) > at > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201) > at > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282) > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1548) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:524) at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:568) > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1110) > at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1044) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:199) > at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) > at > org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:159) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) > at org.eclipse.jetty.server.Server.handle(Server.java:459) at > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:280) at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:229) > at org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536) > at java.lang.Thread.run(Thread.java:722) -- This message was sent by Atlassian JIRA (v6.3.4#6332)