-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Non-linearizable execution of channels #1419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
|
|
|
|
|
Here's the problematic scenario that happens here. We have two queued (suspended)
Now, we have two sequential send operations in the other thread: The first The second For from the standpoint of those sends the execution is not linearizable -- first we observe a channel that is already closed, then we observe a channel that is not closed yet. |
The fix is that |
Send operations must ALWAYS help close the channel when they observe that it was closed before throwing an exception. Fixes #1419
Send operations must ALWAYS help close the channel when they observe that it was closed before throwing an exception. Fixes #1419
Send operations must ALWAYS help close the channel when they observe that it was closed before throwing an exception. Fixes #1419
ChannelLinearizabilityTest.testConflatedChannelLinearizability
:The text was updated successfully, but these errors were encountered: