This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push: new 81c88b8 Add debug logging after test failure on Travis CI 81c88b8 is described below commit 81c88b82e1f934e1c4efdd353a800c060a817dcd Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Mar 17 09:19:03 2021 +0000 Add debug logging after test failure on Travis CI Error was: Exception in thread "http-nio2-127.0.0.1-auto-1-exec-6" java.nio.BufferOverflowException at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:213) at org.apache.coyote.http2.Http2Parser.readDataFrame(Http2Parser.java:200) ... So far, I ahven't been able to identify a code path that could trigger this so enabling debug logging to gather more info. --- .../apache/coyote/http2/TestCancelledUpload.java | 121 +++++++++++---------- 1 file changed, 64 insertions(+), 57 deletions(-) diff --git a/test/org/apache/coyote/http2/TestCancelledUpload.java b/test/org/apache/coyote/http2/TestCancelledUpload.java index 77c31ba..60c943b 100644 --- a/test/org/apache/coyote/http2/TestCancelledUpload.java +++ b/test/org/apache/coyote/http2/TestCancelledUpload.java @@ -19,6 +19,8 @@ package org.apache.coyote.http2; import java.io.IOException; import java.io.InputStream; import java.nio.ByteBuffer; +import java.util.logging.Level; +import java.util.logging.LogManager; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; @@ -38,72 +40,77 @@ public class TestCancelledUpload extends Http2TestBase { public void testCancelledRequest() throws Exception { http2Connect(); - ((AbstractHttp11Protocol<?>) http2Protocol.getHttp11Protocol()).setAllowedTrailerHeaders(TRAILER_HEADER_NAME); + LogManager.getLogManager().getLogger("org.apache.coyote.http2").setLevel(Level.ALL); + try { + ((AbstractHttp11Protocol<?>) http2Protocol.getHttp11Protocol()).setAllowedTrailerHeaders(TRAILER_HEADER_NAME); - int bodySize = 8192; - int bodyCount = 20; + int bodySize = 8192; + int bodyCount = 20; - byte[] headersFrameHeader = new byte[9]; - ByteBuffer headersPayload = ByteBuffer.allocate(128); - byte[] dataFrameHeader = new byte[9]; - ByteBuffer dataPayload = ByteBuffer.allocate(bodySize); - byte[] trailerFrameHeader = new byte[9]; - ByteBuffer trailerPayload = ByteBuffer.allocate(256); + byte[] headersFrameHeader = new byte[9]; + ByteBuffer headersPayload = ByteBuffer.allocate(128); + byte[] dataFrameHeader = new byte[9]; + ByteBuffer dataPayload = ByteBuffer.allocate(bodySize); + byte[] trailerFrameHeader = new byte[9]; + ByteBuffer trailerPayload = ByteBuffer.allocate(256); - buildPostRequest(headersFrameHeader, headersPayload, false, dataFrameHeader, dataPayload, - null, trailerFrameHeader, trailerPayload, 3); + buildPostRequest(headersFrameHeader, headersPayload, false, dataFrameHeader, dataPayload, + null, trailerFrameHeader, trailerPayload, 3); - // Write the headers - writeFrame(headersFrameHeader, headersPayload); - // Body - for (int i = 0; i < bodyCount; i++) { - writeFrame(dataFrameHeader, dataPayload); - } + // Write the headers + writeFrame(headersFrameHeader, headersPayload); + // Body + for (int i = 0; i < bodyCount; i++) { + writeFrame(dataFrameHeader, dataPayload); + } - // Trailers - writeFrame(trailerFrameHeader, trailerPayload); - - // The Server will process the request on a separate thread to the - // incoming frames. - // The request processing thread will: - // - read up to 128 bytes of request body - // (and issue a window update for bytes read) - // - write a 403 response with no response body - // The connection processing thread will: - // - read the request body until the flow control window is exhausted - // - reset the stream if further DATA frames are received - parser.readFrame(true); - - // Check for reset and exit if found - if (checkReset()) { - return; - } + // Trailers + writeFrame(trailerFrameHeader, trailerPayload); + + // The Server will process the request on a separate thread to the + // incoming frames. + // The request processing thread will: + // - read up to 128 bytes of request body + // (and issue a window update for bytes read) + // - write a 403 response with no response body + // The connection processing thread will: + // - read the request body until the flow control window is exhausted + // - reset the stream if further DATA frames are received + parser.readFrame(true); - // Not window update, not reset, must be the headers - Assert.assertEquals("3-HeadersStart\n" + - "3-Header-[:status]-[403]\n" + - "3-Header-[content-length]-[0]\n" + - "3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]\n" + - "3-HeadersEnd\n", - output.getTrace()); - output.clearTrace(); - parser.readFrame(true); - - // Check for reset and exit if found - if (checkReset()) { - return; - } + // Check for reset and exit if found + if (checkReset()) { + return; + } + + // Not window update, not reset, must be the headers + Assert.assertEquals("3-HeadersStart\n" + + "3-Header-[:status]-[403]\n" + + "3-Header-[content-length]-[0]\n" + + "3-Header-[date]-[Wed, 11 Nov 2015 19:18:42 GMT]\n" + + "3-HeadersEnd\n", + output.getTrace()); + output.clearTrace(); + parser.readFrame(true); - // Not window update, not reset, must be the response body - Assert.assertEquals("3-Body-0\n" + - "3-EndOfStream\n", - output.getTrace()); - output.clearTrace(); - parser.readFrame(true); + // Check for reset and exit if found + if (checkReset()) { + return; + } - Assert.assertTrue(checkReset()); + // Not window update, not reset, must be the response body + Assert.assertEquals("3-Body-0\n" + + "3-EndOfStream\n", + output.getTrace()); + output.clearTrace(); + parser.readFrame(true); + + Assert.assertTrue(checkReset()); - // If there are any more frames after this, ignore them + // If there are any more frames after this, ignore them + } finally { + LogManager.getLogManager().getLogger("org.apache.coyote.http2").setLevel(Level.INFO); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org