[
https://issues.apache.org/jira/browse/WICKET-3997?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13092987#comment-13092987
]
Konstantin Ignatyev commented on WICKET-3997:
---------------------------------------------
I am navigating from home page to search results page where I use the same
search criteria component that every second tries to do ajax refresh if there
are any changes in the criteria. I hard to tell, but it seems like this
behavior is triggered by a runtime(?) exception swallowed somewhere.
The same page is working fine in Safari and Chrome, however when I thoroughly
cleaned server side store keyed on cookie, the page started to work again till
I made some changes to the stored classes and then page stopped working again.
So, my main point is that it seems Wicked somehow swallows runtime exception
thrown by application in a RequestCycleListener in the "onEndRequest" method.
And then it causes further misbehavior -
def onEndRequest(cycle: RequestCycle) {
val urlRaw = cycle.getRequest.getUrl.toString
val url = if( urlRaw.indexOf("?")!= -1)
urlRaw.substring(0,urlRaw.indexOf("?")) else urlRaw
if( url.length() > 5){ //if request is for resources do not bother
saving user, only for page requests
//should be a better way to do that
if( url.substring( url.length() - 5).indexOf(".") == -1){
println( "url::" + url)
DataUtils.profile({ userSvc.save( acUser ); "saveUser" })
}
}
}
> Error during processing error message - lack of clues/pointers to a cause for
> the error
> ---------------------------------------------------------------------------------------
>
> Key: WICKET-3997
> URL: https://issues.apache.org/jira/browse/WICKET-3997
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 1.5.0
> Reporter: Konstantin Ignatyev
>
> I started to see IO exception and then multitude of "Header was already
> written" exceptions on a page that displays data table so I suspect that one
> of components of item renderer is to blame, however there is NO clue in the
> stack what could cause that.
> Happening with jetty 7.4.5 and 8.0RC0, 8.0M3, did not try other versions, and
> I did not see the exception before, so I suspect some W internals
> <2011-08-26 11:52:34,984> ERROR [org.apache.wicket.DefaultExceptionMapper] -
> Unexpected error occurred (qtp1770734042-28)
> org.eclipse.jetty.io.RuntimeIOException: org.eclipse.jetty.io.EofException
> at
> org.eclipse.jetty.io.UncheckedPrintWriter.setError(UncheckedPrintWriter.java:107)
> at
> org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:280)
> at
> org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:295)
> at java.io.PrintWriter.append(PrintWriter.java:960)
> at
> org.apache.wicket.protocol.http.servlet.ServletWebResponse.write(ServletWebResponse.java:109)
> at
> org.apache.wicket.protocol.http.HeaderBufferingWebResponse.write(HeaderBufferingWebResponse.java:174)
> at
> org.apache.wicket.protocol.http.BufferedWebResponse$WriteCharSequenceAction.invoke(BufferedWebResponse.java:161)
> at
> org.apache.wicket.protocol.http.BufferedWebResponse.writeTo(BufferedWebResponse.java:552)
> at
> org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:185)
> at
> org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:147)
> at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:719)
> at
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:63)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:253)
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162)
> at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:218)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:476)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
> at
> org.eclipse.jetty.server.handler.ContextHandler.__doHandle(ContextHandler.java:937)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:871)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
> at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
> at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
> at org.eclipse.jetty.server.Server.handle(Server.java:346)
> at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:589)
> at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1048)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:601)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
> at
> org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
> at java.lang.Thread.run(Thread.java:680)
> Caused by: org.eclipse.jetty.io.EofException
> at
> org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:911)
> at
> org.eclipse.jetty.http.AbstractGenerator.blockForOutput(AbstractGenerator.java:517)
> at
> org.eclipse.jetty.http.AbstractGenerator.flush(AbstractGenerator.java:437)
> at org.eclipse.jetty.server.HttpOutput.flush(HttpOutput.java:89)
> at
> org.eclipse.jetty.server.HttpConnection$Output.flush(HttpConnection.java:1139)
> at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:172)
> at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:96)
> at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:109)
> at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:283)
> at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:107)
> at org.eclipse.jetty.server.HttpWriter.write(HttpWriter.java:96)
> at
> org.eclipse.jetty.io.UncheckedPrintWriter.write(UncheckedPrintWriter.java:271)
> ... 38 more
> Caused by: java.io.IOException: Broken pipe
> at sun.nio.ch.FileDispatcher.write0(Native Method)
> at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)
> at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:72)
> at sun.nio.ch.IOUtil.write(IOUtil.java:28)
> at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:334)
> at
> org.eclipse.jetty.io.nio.ChannelEndPoint.flush(ChannelEndPoint.java:219)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.flush(SelectChannelEndPoint.java:282)
> at
> org.eclipse.jetty.http.HttpGenerator.flushBuffer(HttpGenerator.java:855)
> ... 49 more
> and then bunch of exceptions like one below
> <2011-08-26 11:29:08,381> ERROR
> [org.apache.wicket.request.cycle.RequestCycle] - Error during processing
> error message (qtp1770734042-28)
> java.lang.IllegalStateException: Header was already written to response!
> at
> org.apache.wicket.protocol.http.HeaderBufferingWebResponse.checkHeader(HeaderBufferingWebResponse.java:64)
> at
> org.apache.wicket.protocol.http.HeaderBufferingWebResponse.setDateHeader(HeaderBufferingWebResponse.java:134)
> at
> org.apache.wicket.protocol.http.BufferedWebResponse$SetDateHeaderAction.invoke(BufferedWebResponse.java:298)
> at
> org.apache.wicket.protocol.http.BufferedWebResponse.writeTo(BufferedWebResponse.java:552)
> at
> org.apache.wicket.request.handler.render.WebPageRenderer.respond(WebPageRenderer.java:185)
> at
> org.apache.wicket.request.handler.RenderPageRequestHandler.respond(RenderPageRequestHandler.java:147)
> at
> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:719)
> at
> org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:63)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:274)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.executeExceptionRequestHandler(RequestCycle.java:283)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:226)
> at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:253)
> at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:162)
> at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:218)
> at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323)
> at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:476)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
> at
> org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517)
> at
> org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:225)
> at
> org.eclipse.jetty.server.handler.ContextHandler.__doHandle(ContextHandler.java:937)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java)
> at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:406)
> at
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
> at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:871)
> at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
> at
> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)
> at
> org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
> at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
> at org.eclipse.jetty.server.Server.handle(Server.java:346)
> at
> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:589)
> at
> org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1048)
> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:601)
> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:214)
> at
> org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:535)
> at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40)
> at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)
> at java.lang.Thread.run(Thread.java:680)
> Application is too big and proprietary to send as test case, sorry. But I
> would be happy to place log statements or debug any sections if you point me
> at them.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira