Use upgradable read lock for pubkey cache #6190
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.
Proposed Changes
Small optimisation to avoid taking a write lock on the
pubkey_cache
during block processing in the common case where no new validators are deposited.An upgradable read lock does not exclude other readers, so this reduces contention on the lock and may make certain ops faster. An upgradable read does exclude other upgradable reads, but seeing as we expect to only be importing ~1 block at a time, this should rarely occur.
This seemed to show a small improvement in attestation verification times when I was benchmarking with @kevaundray & @jimmygchen yesterday, although we didn't quite control all our variables properly so I'll be repeating that experiment shortly.
Additional Info
We will likely refactor & consolidate the pubkey cache at some point in the near future, but until then I think this is a nice improvement, albeit minor.