Locking fixes for versions of Dashmap v5.1.0 and beyond #23765
Merged
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.
Problem
Bumping dashmap version to v5.1.0 caused validator with secondary indexes to stall, and thus had to be reverted: #23592
Dashmap v5.1.0 switched over to using
parking_lot
RwLocks. Because these locks can be write-prioritized, this means that behavior like:can deadlock if Thread 2 grabs the write lock between the first and second attempts to grab
Read(A)
by Thread 1.Summary of Changes
The attempt to grab read lock here:
solana/runtime/src/secondary_index.rs
Lines 132 to 137 in 857576d
solana/runtime/src/secondary_index.rs
Line 150 in 857576d
TODO: Check use cases across the rest of the code base
Fixes #