Description
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-project.zip (9.08 kB)
Issue Links:
- WebClient does not write Mono.empty() request body [SPR-17220] #21753 WebClient does not write Mono.empty() request body
- ChannelSendOperator does not propagate cancel signal to the server [SPR-17609] #22141 ChannelSendOperator does not propagate cancel signal to the server
- Add unique number to WebFlux log prefix for Reactor Netty server #22039 WebFlux log prefix improvements for Reactor Netty