You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by "matthew c. mead" <m-...@goof.com> on 2005/03/09 23:31:31 UTC
Issues with client abort during streamed file
I've seemingly run into a brick wall... I'm about to start diddling
around in the Tapestry source code, but wanted to check here as a sanity
check first.
I am streaming files out of a Tapestry application deployed in Tomcat
5.0.28. If the user cancels the transfer, I catch and handle a
org.apache.catalina.connector.ClientAbortException in my page class. No
problem, right?
Wrong. The first exception subsequently shows up in the log. If the
user then attempts to do anything with the application that requires the
session, they get presented with the Tomcat exception page. Tapestry
logs the second exception below.
Is there a way to prevent Tapestry from invalidating the session when
the user aborts data transfer?
THANKS!
-matt
[1644514][WARN][tapestry.engine.AbstractEngine] Exception during
post-request cleanup.
ClientAbortException: java.net.SocketException: Broken pipe
at
org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes(OutputBuffer.java:373)
at
org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:398)
at
org.apache.coyote.tomcat5.OutputBuffer.doFlush(OutputBuffer.java:318)
at
org.apache.coyote.tomcat5.OutputBuffer.flush(OutputBuffer.java:297)
at
org.apache.coyote.tomcat5.CoyoteOutputStream.flush(CoyoteOutputStream.java:85)
at
org.apache.tapestry.request.ResponseOutputStream.forceFlush(ResponseOutputStream.java:149)
at
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:928)
at
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197)
at
org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:552)
[1716844][WARN][tapestry.engine.AbstractEngine] Unable to present
exception page.
org.apache.tapestry.ApplicationRuntimeException: getCreationTime:
Session already invalidated
at
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:382)
at
org.apache.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:732)
at
org.apache.tapestry.engine.AbstractEngine.activateExceptionPage(AbstractEngine.java:459)
at
org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:914)
at
org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:197)
at
org.apache.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:158)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:552)
Caused by: java.lang.IllegalStateException: getCreationTime: Session
already invalidated
at
org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:920)
at
org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:77)
at
org.apache.tapestry.request.RequestContext.write(RequestContext.java:751)
at
org.apache.tapestry.request.RequestContext.render(RequestContext.java:1062)
at
org.apache.tapestry.components.Delegator.renderComponent(Delegator.java:45)
at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
at
org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:624)
at org.apache.tapestry.html.Shell.renderComponent(Shell.java:124)
at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
at
org.apache.tapestry.BaseComponent.renderComponent(BaseComponent.java:118)
at
org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:857)
at
org.apache.tapestry.AbstractPage.renderPage(AbstractPage.java:300)
at
org.apache.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:368)
... 31 more
--
matthew c. mead
http://www.goof.com/