diff --git a/beacon_node/beacon_chain/src/canonical_head.rs b/beacon_node/beacon_chain/src/canonical_head.rs index 53e0fbaac..c9bd6db0e 100644 --- a/beacon_node/beacon_chain/src/canonical_head.rs +++ b/beacon_node/beacon_chain/src/canonical_head.rs @@ -654,11 +654,11 @@ impl BeaconChain { }) }) .and_then(|mut snapshot| { - // Regardless of where we got the state from, attempt to build all the - // caches except the tree hash cache. + // Regardless of where we got the state from, attempt to build the committee + // caches. snapshot .beacon_state - .build_all_caches(&self.spec) + .build_all_committee_caches(&self.spec) .map_err(Into::into) .map(|()| snapshot) })?; diff --git a/beacon_node/http_api/src/lib.rs b/beacon_node/http_api/src/lib.rs index 51e97c893..5b4fa5816 100644 --- a/beacon_node/http_api/src/lib.rs +++ b/beacon_node/http_api/src/lib.rs @@ -668,10 +668,9 @@ pub fn serve( "Invalid validator ID".to_string(), )) })) - .and(log_filter.clone()) .and(warp::path::end()) .and_then( - |state_id: StateId, chain: Arc>, validator_id: ValidatorId, log| { + |state_id: StateId, chain: Arc>, validator_id: ValidatorId| { blocking_json_task(move || { let (data, execution_optimistic) = state_id .map_state_and_execution_optimistic( @@ -679,23 +678,7 @@ pub fn serve( |state, execution_optimistic| { let index_opt = match &validator_id { ValidatorId::PublicKey(pubkey) => { - // Fast path: use the pubkey cache which is probably - // initialised at the head. - match state.get_validator_index_read_only(pubkey) { - Ok(result) => result, - Err(e) => { - // Slow path, fall back to iteration. - debug!( - log, - "Validator look-up cache miss"; - "reason" => ?e, - ); - state - .validators() - .iter() - .position(|v| v.pubkey == *pubkey) - } - } + state.validators().iter().position(|v| v.pubkey == *pubkey) } ValidatorId::Index(index) => Some(*index as usize), }; diff --git a/consensus/types/src/beacon_state.rs b/consensus/types/src/beacon_state.rs index 46a431d07..a5d00cdf2 100644 --- a/consensus/types/src/beacon_state.rs +++ b/consensus/types/src/beacon_state.rs @@ -447,21 +447,6 @@ impl BeaconState { Ok(self.pubkey_cache().get(pubkey)) } - /// Immutable variant of `get_validator_index` which errors if the cache is not up to date. - pub fn get_validator_index_read_only( - &self, - pubkey: &PublicKeyBytes, - ) -> Result, Error> { - let pubkey_cache = self.pubkey_cache(); - if pubkey_cache.len() != self.validators().len() { - return Err(Error::PubkeyCacheIncomplete { - cache_len: pubkey_cache.len(), - registry_len: self.validators().len(), - }); - } - Ok(pubkey_cache.get(pubkey)) - } - /// The epoch corresponding to `self.slot()`. pub fn current_epoch(&self) -> Epoch { self.slot().epoch(T::slots_per_epoch())