You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Expected behavior:
Every request is handled the same way.
Observed behavior:
When returning Mono.empty() from an @RestController the following occurs:
When Chrome is used to make the GET requests the first request is handled on reactor-http-nio-2 thread and seems to be handled correct.
When making a second request (using F5) after that (using keep-alive) the request is handled on the same reactor-http-nio-2 thread, however this request never completes according to chrome and keeps in the "pending" state forever.
When making another request (using F5) after that, the request is handled by reactor-http-nio-1 thread and seems to be handled correct.
When making another request (using F5) after that, the request is handled by the same reactor-http-nio-1 thread and again never completes.
The behavior is repeatable, failing exactly 50% of requests (the second request on the same reactor thread).
tested using Windows 10 / Chrome 70.0.3538.102
Note that the TRACE logging actually shows the same logging for both the properly handled and the failing requests as if completed succesfully.
Furthermore all requests that seem to be handled by the same tcp/ip connection and reactor-thread also use the same log prefix for which I'll make a separate ticket.
#21753 addressed a similar issue but for a client-side POST with an empty body. At the same time that solution does not work for the case here. For some reason, on an HTTP GET, writing byte[0] to the Reactor Netty server response with "content-length" set to 0, never emits a completion signal. There may be a Reactor Netty issue. Violeta Georgieva, smaldini, let me know if you think that deserves a Reactor Netty issue to be opened?
That said, using response.setComplete() in case of empty content is cleaner than writing byte[0], so I'll switch to that.
Robbert van Waveren opened SPR-17506 and commented
Expected behavior:
Every request is handled the same way.
Observed behavior:
When returning Mono.empty() from an
@RestController
the following occurs:When Chrome is used to make the GET requests the first request is handled on reactor-http-nio-2 thread and seems to be handled correct.
When making a second request (using F5) after that (using keep-alive) the request is handled on the same reactor-http-nio-2 thread, however this request never completes according to chrome and keeps in the "pending" state forever.
When making another request (using F5) after that, the request is handled by reactor-http-nio-1 thread and seems to be handled correct.
When making another request (using F5) after that, the request is handled by the same reactor-http-nio-1 thread and again never completes.
The behavior is repeatable, failing exactly 50% of requests (the second request on the same reactor thread).
tested using Windows 10 / Chrome 70.0.3538.102
Note that the TRACE logging actually shows the same logging for both the properly handled and the failing requests as if completed succesfully.
Furthermore all requests that seem to be handled by the same tcp/ip connection and reactor-thread also use the same log prefix for which I'll make a separate ticket.
Affects: 5.1.2
Attachments:
Issue Links:
The text was updated successfully, but these errors were encountered: