Avoid deadlock in RealMutableStore #658
Merged
+99
−4
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.
Closes #657
Description
The change ensures that the store lock is always released from
withThreadSafety
regardless of the execution result ofthreadSafety.block()
.This helps in avoiding the lock being in a locked state when a cancellation exception is propagated from downstream.
The test mentioned in the issue and added here now passes 100% of the time. Of course happy to delete it (or move it somewhere else) before merging.
Type of Change
Test Plan
See unit test
Checklist:
Before submitting your PR, please review and check all of the following:
Additional Notes:
Add any other information about the PR here.