https://bz.apache.org/bugzilla/show_bug.cgi?id=70288
--- Comment #4 from abernal <[email protected]> --- Created attachment 40246 --> https://bz.apache.org/bugzilla/attachment.cgi?id=40246&action=edit Stress test: real HTTP/2 connector, non-blocking ReadListener, 1-byte bodies (TestStreamReadCompletionRace.java) Reproduced against a real HTTP/2 connector, not a mock. The attached test (place it in test/org/apache/coyote/http2 and run it with ant) sends POST requests with a 1 byte body to a servlet that reads it with a non-blocking ReadListener. HEADERS and DATA(END_STREAM) are sent with a random gap of up to 0.3 ms, 50 streams at a time, so the DATA frame arrives while the servlet is calling setReadListener(). On unmodified main, within 9k to 58k requests per run, with both async IO settings: onAllDataRead() is called with 0 bytes read and onDataAvailable() is never called, so the body is lost, and some requests never get any read event. With the EOF-first reordering from attachment 40237 applied to Stream.StandardStreamInputBuffer.isRequestBodyFullyRead(): 0 failures in 400k requests (2 runs of 100k per async IO setting). -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
