mpsc: ensure try_reserve error is consistent with try_send #4119
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.
Fixes #4118.
Motivation
try_reserve()andtry_reserve_owned()oftokio::sync::mpsc::Senderare inconsistent withtry_send()in the error they return, signallingFullinstead ofClosedfor a closed channel. If other code relies on this error as documented, it might forever retry sending to a closed channel.Solution
I copied the handling of the
TryAcquireErrorfromtry_send()totry_reserve()andtry_reserve_owned(); as far as I can tell, this is probably what it should have been in the first place whentry_reserve()was introduced by 672be92, and thentry_reserve_owned()just copiedtry_reserve()behaviour.