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]

Reply via email to