Open
Conversation
Contributor
Author
|
Not sure how I didn't notice this deadlock sooner. I think it's important to get this in somehow. |
This was referenced Mar 11, 2026
Luap99
reviewed
Mar 13, 2026
| statusChan <- changed | ||
| select { | ||
| case statusChan <- changed: | ||
| case <-ctx.Done(): |
Collaborator
There was a problem hiding this comment.
I think this should return here.
Otherwise if the timer channel below is completed already we might end up doing another loop iteration for no reason.
| errChan <- err | ||
| select { | ||
| case errChan <- err: | ||
| case <-ctx.Done(): |
When cancelling the ctx, if we have a pending channel send, then we'll deadlock. The correct pattern is to abort if ctx exits. We also close the channels when the sender closes.
82df0eb to
a62331f
Compare
Contributor
Author
Not a minor thing, I just plainly was coding fast and not paying attention. All fixed and rebased. Cheers |
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.
When cancelling the ctx, if we have a pending channel send, then we'll deadlock. The correct pattern is to abort if ctx exits.
We also close the channels when the sender closes.