Repository navigation
THRIFT-6443: Count a client dropped while sending in the dispatch_rejection test - #4037
Merged
Merged
Conversation
…ection test Client: cpp With a non-blocking dispatch, serve() rejects and closes a client right after accepting it, while the test client may still be writing its request. When the close got there first, the send failed, the test discarded that client, and if that happened to every rejected client the check found no drop. too_many_pending_tasks_does_not_end_the_server failed that way in about a third of the Windows CI jobs. A fired client whose send fails with a transport error other than a timeout now counts as dropped, like one that reads end-of-stream or a reset. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
THRIFT-6443
dispatch_rejection/too_many_pending_tasks_does_not_end_the_serverinTServerIntegrationTestfails intermittently on Windows with "no client was dropped; the pool was not driven into rejection". Since 2026-10-19, 15 of the 45 AppVeyor jobs on commits that contain the case failed that way (MSVC2022 and MinGW), and none of the 15 jobs without it. The GitHub Actions MSVC build is hit too, for example on master47fe9968fandd01c127d0.The server does what it should; the test misses the drops. With a non-blocking dispatch,
serve()rejects and closes a client right after accepting it, while the test client still writes its request in severalsend()calls. When the close gets there first, the send fails ("An established connection was aborted by the software in your host machine" in every failing log), thecatch (...)discards that client, and it never reaches the end-of-stream check. When that happens to every rejected client, the check finds no drop.The test now counts a fired client whose send fails with a transport error other than a timeout as dropped, like one that reads end-of-stream or a reset. Test-only change.
Checked in
thrift:jammy(Release build ofTServerIntegrationTest):dispatch_rejection15 of 15 passdispatch_rejection15 of 15 pass, whole module "No errors detected"The forced interleaving was a local experiment only and is not part of the change. On Windows, only CI can show the effect: the MSVC job and AppVeyor of this PR.
🤖 Generated with Claude Code