Drain the listener on the same margin the client uses - #812
Merged
Conversation
AnOwnerAnswersAClient failed on Windows with a TimeoutException out of Wait: the listener had not unwound within five seconds of being cancelled. A re-run with no code change went green. The comment on underLoad already describes exactly why: CI starts six test assemblies at once on a two core runner, and an answer arriving on a scheduled task has twice missed a deadline set for an idle machine. Unwinding the accept needs its continuation scheduled on that same pool, so Wait was making the bet the client timeout above it had already stopped making. It now uses the same constant, so there is one number rather than two that disagree. Still throws when it runs out. A listener that never unwinds is a real bug, and this is the only place that would notice - so the margin is widened rather than the failure swallowed.
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.
AnOwnerAnswersAClient failed on Windows with a TimeoutException out of Wait: the
listener had not unwound within five seconds of being cancelled. A re-run with
no code change went green.
The comment on underLoad already describes exactly why: CI starts six test
assemblies at once on a two core runner, and an answer arriving on a scheduled
task has twice missed a deadline set for an idle machine. Unwinding the accept
needs its continuation scheduled on that same pool, so Wait was making the bet
the client timeout above it had already stopped making. It now uses the same
constant, so there is one number rather than two that disagree.
Still throws when it runs out. A listener that never unwinds is a real bug, and
this is the only place that would notice - so the margin is widened rather than
the failure swallowed.