Uh oh!
There was an error while loading. Please reload this page.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A bit unfortunate that we had to add a 10 msec delay here -- in most cases that will waste 10 msec and occasionally it will not wait long enough and the test will flake-fail. Why won't call_soon work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Background: this test covers a bug that base exceptions like
KeyboardInterruptwill cause the loop to be closed twice, leading to an early exit in the next loop run.This test was added before
_StopErrorwas dropped, at that time the loop will stop as soon as_StopErroris raised, even if the_readyqueue still has a handle (which is the next run - thefunc()here), therefore this was a good test. But now the loop will exhaust the_readyqueue before stopping, so this test couldn't cover the bug anymore without this PR. That's also why we cannot simply addfunc()into the_readyqueue bycall_soon().You're right about the flakyness of using
call_later()tho. Now I think a better fix would be to use chainedcall_soon()to skip the first iteration where the buggy stop occured:I verified and this error fails if the fix in f3e2e09 is reverted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clever solution, go ahead and make it a PR, assign to me or @kumaraditya303 for review.