On Thu, Oct 1, 2020 at 12:29 PM Mark Thomas <ma...@apache.org> wrote:
> On 30/09/2020 18:47, Martin Grigorov wrote: > > On Wed, Sep 30, 2020 at 7:47 PM Mark Thomas <ma...@apache.org> wrote: > >> On 30/09/2020 16:17, Mark Thomas wrote: > > <snip/> > > >>> That is helpful. Looks like you have found a way to reproduce the > buffer > >>> issues reported in > https://bz.apache.org/bugzilla/show_bug.cgi?id=64710 > >> > >> Can you share the command you used to trigger those errors please. > >> > > > > The Vegeta command I used is: > > > > jq -ncM '{"method": "POST", "url": " > https://localhost:8080/testbed/plaintext", > > "body":"payload=Some > > > sdgggwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwsdgssfshffheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeessssffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffpayload" > > | @base64, header: {"Content-Type": > > ["application/x-www-form-urlencoded"]}}' | vegeta attack -format=json > > -http2 -rate=1000 -max-workers=8 -insecure -duration=2m | vegeta encode > > > /tmp/http2.json; and vegeta report -type=json /tmp/http2.json | jq . > > > > The app is at > > > https://github.com/martin-g/http2-server-perf-tests/tree/master/java/tomcat > . > > Just start EmbeddedTomcat#main() with -Dtomcat.http2=true > > Definitely timing related as I am unable to reproduce the problem with > that command or some variations. > > However, I think I have managed to track down the root cause. The good > news is that the BufferOverflowException is largely harmless. It is a > side-effect of the connection being closed due to an error. My guess is > that the error was a combination of vegeta sending an unexpected reset > frame and Tomcat maintaining state for a very small number of streams in > some circumstances. > > If you could retest with the latest 9.0.x that would be very helpful. > The memory usage, stream state maintenance and this > BufferOverflowException should all be fixed. > Yesterday it was very easy to reproduce it here. It looks good now - both exception types didn't happen in several runs! But something new broke: SEVERE: Servlet.service() for servlet [plaintext] in context with path [] threw exception java.lang.NullPointerException: Cannot throw exception because "ioe" is null at org.apache.coyote.http2.Http2UpgradeHandler.handleAppInitiatedIOException(Http2UpgradeHandler.java:797) at org.apache.coyote.http2.Http2AsyncUpgradeHandler.handleAsyncException(Http2AsyncUpgradeHandler.java:276) at org.apache.coyote.http2.Http2AsyncUpgradeHandler.writeWindowUpdate(Http2AsyncUpgradeHandler.java:252) at org.apache.coyote.http2.Stream$StreamInputBuffer.doRead(Stream.java:1088) at org.apache.coyote.Request.doRead(Request.java:555) at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:336) at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:632) at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:362) at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:132) at org.apache.catalina.connector.Request.readPostBody(Request.java:3308) at org.apache.catalina.connector.Request.parseParameters(Request.java:3241) at org.apache.catalina.connector.Request.getParameter(Request.java:1124) at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:381) at info.mgsolutions.tomcat.PlainTextServlet.doPost(PlainTextServlet.java:41) at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) I will improve it! > Mark > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > >