Skip to content

Commit

Permalink
Use upgradable read lock for pubkey cache (sigp#6190)
Browse files Browse the repository at this point in the history
* Use upgradable read for pubkey cache
  • Loading branch information
michaelsproul authored Jul 26, 2024
1 parent f60503c commit f4ddc45
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions beacon_node/beacon_chain/src/beacon_chain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3481,9 +3481,15 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
// would be difficult to check that they all lock fork choice first.
let mut ops = {
let _timer = metrics::start_timer(&metrics::BLOCK_PROCESSING_PUBKEY_CACHE_LOCK);
self.validator_pubkey_cache
.write()
.import_new_pubkeys(&state)?
let pubkey_cache = self.validator_pubkey_cache.upgradable_read();

// Only take a write lock if there are new keys to import.
if state.validators().len() > pubkey_cache.len() {
parking_lot::RwLockUpgradableReadGuard::upgrade(pubkey_cache)
.import_new_pubkeys(&state)?
} else {
vec![]
}
};

// Apply the state to the attester cache, only if it is from the previous epoch or later.
Expand Down

0 comments on commit f4ddc45

Please sign in to comment.