Hi,
I have a curious error ... using Jetty 8.1.10
We have a client sending us a request that appears to be badly encoded in some way. We have a servlet that is making use of a continuation.
So, on the first pass, it appears to handle the request, we capture details from the query params successfully (we are able to grab all of these on the first pass and log them), then we establish a continuation, set a timeout and suspend() it.
However, it seems that upon resuming this continuation, it is then unable to parse the response on this second pass and generates the following stack trace.
2013-10-04 10:07:10,199 85177654 (qtp1195561814-892) WARN [org.eclipse.jetty.util.UrlEncoded] org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! byte 73 in state 4
2013-10-04 10:07:10,199 85177654 (qtp1195561814-892) WARN [org.eclipse.jetty.io.nio] handle failed
org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! byte 73 in state 4
at org.eclipse.jetty.util.Utf8Appendable.appendByte(Utf8Appendable.java:178)
at org.eclipse.jetty.util.Utf8Appendable.append(Utf8Appendable.java:117)
at org.eclipse.jetty.http.HttpURI.toUtf8String(HttpURI.java:503)
at org.eclipse.jetty.http.HttpURI.toString(HttpURI.java:762)
at java.lang.String.valueOf(String.java:2854)
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:535)
at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Thread.java:722)
The offending request regrettably doesn't make it to the access log (I am hopeful that we will be able to work with the offending client to capture a trace, and can make that available)
Based on the fact that i am initially able to handle the request before the continuation is resumed, i guess there is some inconsistency in the request parsing once the request is re-played by the continuation.
Has anybody seen something simiilar to this? is there a workaround or some known gotcha i may be tripping over here?
Thanks
Paul