You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2014/03/21 10:57:15 UTC

[Bug 56296] New: AjpNioProcessor throws java.nio.BufferOverflowException

https://issues.apache.org/bugzilla/show_bug.cgi?id=56296

            Bug ID: 56296
           Summary: AjpNioProcessor throws
                    java.nio.BufferOverflowException
           Product: Tomcat 7
           Version: 7.0.52
          Hardware: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: hugo.lumsdon@blackrock.com

We are seeing the following sporadic exceptions in catalina.out:

Mar 21, 2014 2:42:13 AM org.apache.coyote.ajp.AjpNioProcessor process
SEVERE: Error processing request
java.nio.BufferOverflowException
        at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:183)
        at
org.apache.coyote.ajp.AjpNioProcessor.output(AjpNioProcessor.java:296)
        at
org.apache.coyote.ajp.AbstractAjpProcessor$SocketOutputBuffer.doWrite(AbstractAjpProcessor.java:1195)
        at org.apache.coyote.Response.doWrite(Response.java:520)
        at
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:408)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
        at
org.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:359)
        at
org.apache.catalina.connector.OutputBuffer.close(OutputBuffer.java:309)
        at
org.apache.catalina.connector.Response.finishResponse(Response.java:510)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:435)
        at
org.apache.coyote.ajp.AjpNioProcessor.process(AjpNioProcessor.java:177)
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1721)
        at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1679)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744


We have correlated these with the following error in our application log:

2014-03-21 02:42:13,753 (tomcat-exec-13) ERROR [xxxxx.StreamingManagerImpl]
Error streaming document [/xxxxxxx/responsible-investment-report-2011.pdf]
ClientAbortException:  java.io.IOException: Broken pipe
        at
org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:413)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
        at
org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:438)
        at
org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:426)
        at
org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
        at
org.apache.catalina.servlets.DefaultServlet.copyRange(DefaultServlet.java:2032)
        at
org.apache.catalina.servlets.DefaultServlet.copy(DefaultServlet.java:1871)
        at
org.apache.catalina.servlets.DefaultServlet.serveResource(DefaultServlet.java:959)
        at
org.apache.catalina.servlets.DefaultServlet.doGet(DefaultServlet.java:409)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)



We want to understand whether the error is benign and simply caused by a client
dropping connection mid-download.  Or if it's the other way round - for example
a slow network download speed to the client causes the buffer overflow and the
connection drop.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 56296] AjpNioProcessor throws java.nio.BufferOverflowException

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=56296

Mark Thomas <ma...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 OS|                            |All

--- Comment #1 from Mark Thomas <ma...@apache.org> ---
The trigger for this series of stack traces is the java.io.IOException: Broken
pipe which normally indicates that the client has dropped the connection or a
network issue that looks like the client has dropped the connection.

The initial error causes a write to fail and as a result the buffer is not
cleared (it should be). The next attempt to write therefore fails because the
buffer has not been cleared.

I'll see what I can do to fix this.

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 56296] AjpNioProcessor throws java.nio.BufferOverflowException

Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=56296

Mark Thomas <ma...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |DUPLICATE

--- Comment #2 from Mark Thomas <ma...@apache.org> ---
I've back-ported the AJP NIO fix to 7.0.x and it will be included in 7.0.53
onwards.

*** This bug has been marked as a duplicate of bug 53119 ***

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org