[FLINK-34644][runtime] Fix race condition in RestServerEndpoint shutdown#27708
Open
MartijnVisser wants to merge 2 commits intoapache:masterfrom
Open
[FLINK-34644][runtime] Fix race condition in RestServerEndpoint shutdown#27708MartijnVisser wants to merge 2 commits intoapache:masterfrom
MartijnVisser wants to merge 2 commits intoapache:masterfrom
Conversation
…own causing flaky test Change thenAccept to thenCompose in AbstractRestHandler.respondToRequest() so that the returned future only completes after the HTTP response is fully flushed to the network. Previously, the future returned by HandlerUtils.sendResponse() was silently discarded, allowing InFlightRequestTracker.deregisterRequest() to fire before the response write completed. Under load this let shutDownInternal() tear down the Netty event loops while response bytes were still in flight, causing ConnectionClosedException on the client side.
Collaborator
Contributor
|
I did a quick cursory search for other use of the Thoughts? Otherwise the proposed fix seems reasonable! 👍 |
Contributor
Author
Should have done that myself, good call-out. Let me fix that, thanks! |
…n AbstractSqlGatewayRestHandler Apply the same fix as AbstractRestHandler: change thenAccept to thenCompose in respondToRequest() so the returned future only completes after the HTTP response is fully flushed. This prevents the same race condition where in-flight request deregistration could fire before the response write completes.
Contributor
|
All good! Approved! 👍 |
rionmonster
approved these changes
Feb 27, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What is the purpose of the change
Fix the flaky test
RestServerEndpointITCase.testShouldWaitForHandlersWhenClosingby addressing a race condition inAbstractRestHandler.respondToRequest()where the HTTP response write future was silently discarded, allowing the in-flight request tracker to deregister requests before the response was fully flushed to the network.Brief change log
thenAccepttothenComposeinAbstractRestHandler.respondToRequest()so that the returned future only completes afterHandlerUtils.sendResponse()has fully flushed the HTTP response to the networkVerifying this change
This change is already covered by existing tests, such as
RestServerEndpointITCase.testShouldWaitForHandlersWhenClosingwhich verifies that in-flight requests complete successfully during server shutdown. The test was previously flaky due to this race condition and now passes reliably.Does this pull request potentially affect one of the following parts:
@Public(Evolving): noDocumentation