An intercepted response causes the error "java.lang.IllegalStateException:
WRITER" in gzip compressed pages
-----------------------------------------------------------------------------------------------------------
Key: TAP5-673
URL: https://issues.apache.org/jira/browse/TAP5-673
Project: Tapestry 5
Issue Type: Bug
Affects Versions: 5.1.0.4
Reporter: Peter Stavrinides
A small piece of code Inside of a standard tapestry RequestFilter:
// the user is logged in but does not have access to the
// requested resource
if (!hasAccess) {
logger_.warn("The user " + sessionAccess
.getUserSecurityManager().getUserFullName()
+ " attempted to access
a protected resource: "
+ path);
response.sendError(HttpServletResponse.SC_FORBIDDEN,
"Access to the
requested resource is denied");
return true;
}
Causes this error:
Stack Trace:
ERROR - WRITER
- com.albourne.web.services.SiteRequestExceptionHandler (?)
java.lang.IllegalStateException: WRITER
at org.mortbay.jetty.Response.getOutputStream(Response.java:573)
at
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.openResponseOutputStream(BufferedGZipOutputStream.java:75)
at
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.forceOutputStream(BufferedGZipOutputStream.java:137)
at
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.close(BufferedGZipOutputStream.java:131)
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:301)
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:130)
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:216)
at java.io.BufferedWriter.close(BufferedWriter.java:248)
at java.io.PrintWriter.close(PrintWriter.java:295)
at
org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:80)
at
$PageResponseRenderer_120f158d8a3.renderPageResponse($PageResponseRenderer_120f158d8a3.java)
at
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:63)
at
org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1948)
at
$PageRenderRequestHandler_120f158d8a4.handle($PageRenderRequestHandler_120f158d8a4.java)
at
$PageRenderRequestHandler_120f158d88f.handle($PageRenderRequestHandler_120f158d88f.java)
at
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
at
$ComponentRequestHandler_120f158d894.handlePageRender($ComponentRequestHandler_120f158d894.java)
at
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
at $Dispatcher_120f158d897.dispatch($Dispatcher_120f158d897.java)
at $Dispatcher_120f158d88a.dispatch($Dispatcher_120f158d88a.java)
at
org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:250)
at
com.albourne.web.services.PageAccessController.service(PageAccessController.java:199)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at com.albourne.web.services.AppModule$3.service(AppModule.java:209)
at $RequestFilter_120f158d889.service($RequestFilter_120f158d889.java)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:783)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:772)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
at
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at $RequestHandler_120f158d883.service($RequestHandler_120f158d883.java)
at
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:202)
at
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
at
$HttpServletRequestHandler_120f158d885.service($HttpServletRequestHandler_120f158d885.java)
at
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at
$HttpServletRequestFilter_120f158d882.service($HttpServletRequestFilter_120f158d882.java)
at
$HttpServletRequestHandler_120f158d885.service($HttpServletRequestHandler_120f158d885.java)
at
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:731)
at
$HttpServletRequestHandler_120f158d885.service($HttpServletRequestHandler_120f158d885.java)
at
$HttpServletRequestHandler_120f158d880.service($HttpServletRequestHandler_120f158d880.java)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1148)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:387)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
2009-04-29 13:13:46.141::WARN: /castle/hf/risk/selectcompare/180
java.lang.IllegalStateException: WRITER
127.0.0.1 - - [29/Apr/2009:10:13:46 +0000] "GET /castle/CSS/castle.css
HTTP/1.1" 200 5634 "http://localhost:8080/castle/hf/risk/selectcompare/180"
"Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.0.10) Gecko/2009042513
Ubuntu/8.04 (hardy) Firefox/3.0.10"
at org.mortbay.jetty.Response.getOutputStream(Response.java:573)
at
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.openResponseOutputStream(BufferedGZipOutputStream.java:75)
at
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.checkForCutover(BufferedGZipOutputStream.java:70)
at
org.apache.tapestry5.internal.gzip.BufferedGZipOutputStream.write(BufferedGZipOutputStream.java:116)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)
at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:263)
at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)
at java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)
at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)
at java.io.BufferedWriter.write(BufferedWriter.java:212)
at java.io.PrintWriter.write(PrintWriter.java:412)
at java.io.PrintWriter.write(PrintWriter.java:429)
at java.io.PrintWriter.print(PrintWriter.java:559)
at org.apache.tapestry5.dom.Text.toMarkup(Text.java:59)
at org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:840)
at org.apache.tapestry5.dom.Element.toMarkup(Element.java:356)
at org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:840)
127.0.0.1 - - [29/Apr/2009:10:13:46 +0000] "GET
/castle/images/albournelogo.gif HTTP/1.1" 200 1147
"http://localhost:8080/castle/hf/risk/selectcompare/180" "Mozilla/5.0 (X11; U;
Linux i686; en-GB; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy)
Firefox/3.0.10"
at org.apache.tapestry5.dom.Element.toMarkup(Element.java:356)
at org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:840)
at org.apache.tapestry5.dom.Element.toMarkup(Element.java:356)
at org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:840)
at org.apache.tapestry5.dom.Element.toMarkup(Element.java:356)
at org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:840)
at org.apache.tapestry5.dom.Element.toMarkup(Element.java:356)
at org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:840)
at org.apache.tapestry5.dom.Element.toMarkup(Element.java:356)
at org.apache.tapestry5.dom.Element.writeChildMarkup(Element.java:840)
at org.apache.tapestry5.dom.Element.toMarkup(Element.java:356)
at org.apache.tapestry5.dom.Document.toMarkup(Document.java:163)
at org.apache.tapestry5.dom.Node.toMarkup(Node.java:80)
at
org.apache.tapestry5.internal.services.MarkupWriterImpl.toMarkup(MarkupWriterImpl.java:57)
at
org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:67)
at
$PageResponseRenderer_120f158d8a3.renderPageResponse($PageResponseRenderer_120f158d8a3.java)
at
com.albourne.web.services.SiteRequestExceptionHandler.handleRequestException(Unknown
Source)
at
$RequestExceptionHandler_120f158d863.handleRequestException($RequestExceptionHandler_120f158d863.java)
at
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:42)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:783)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:772)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
at
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
at
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
at $RequestHandler_120f158d88b.service($RequestHandler_120f158d88b.java)
at $RequestHandler_120f158d883.service($RequestHandler_120f158d883.java)
at
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:202)
at
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
at
$HttpServletRequestHandler_120f158d885.service($HttpServletRequestHandler_120f158d885.java)
at
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
at
$HttpServletRequestFilter_120f158d882.service($HttpServletRequestFilter_120f158d882.java)
at
$HttpServletRequestHandler_120f158d885.service($HttpServletRequestHandler_120f158d885.java)
at
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:731)
at
$HttpServletRequestHandler_120f158d885.service($HttpServletRequestHandler_120f158d885.java)
at
$HttpServletRequestHandler_120f158d880.service($HttpServletRequestHandler_120f158d880.java)
at org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1148)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:387)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:324)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:535)
at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:865)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)
This was introduced with the introduction of gzip compressed pages.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.