committee cache: avoid spurious recomputes
Check that the committeee cache matches the absolute epoch for the relative epoch, rather than always checking the previous epoch.
This commit is contained in:
parent
44bccda4b3
commit
64dca6fba7
@ -110,7 +110,9 @@ where
|
|||||||
pub current_crosslinks: FixedLenVec<Crosslink, T::ShardCount>,
|
pub current_crosslinks: FixedLenVec<Crosslink, T::ShardCount>,
|
||||||
pub previous_crosslinks: FixedLenVec<Crosslink, T::ShardCount>,
|
pub previous_crosslinks: FixedLenVec<Crosslink, T::ShardCount>,
|
||||||
pub latest_block_roots: FixedLenVec<Hash256, T::SlotsPerHistoricalRoot>,
|
pub latest_block_roots: FixedLenVec<Hash256, T::SlotsPerHistoricalRoot>,
|
||||||
|
#[compare_fields(as_slice)]
|
||||||
latest_state_roots: FixedLenVec<Hash256, T::SlotsPerHistoricalRoot>,
|
latest_state_roots: FixedLenVec<Hash256, T::SlotsPerHistoricalRoot>,
|
||||||
|
#[compare_fields(as_slice)]
|
||||||
latest_active_index_roots: FixedLenVec<Hash256, T::LatestActiveIndexRootsLength>,
|
latest_active_index_roots: FixedLenVec<Hash256, T::LatestActiveIndexRootsLength>,
|
||||||
latest_slashed_balances: FixedLenVec<u64, T::LatestSlashedExitLength>,
|
latest_slashed_balances: FixedLenVec<u64, T::LatestSlashedExitLength>,
|
||||||
pub latest_block_header: BeaconBlockHeader,
|
pub latest_block_header: BeaconBlockHeader,
|
||||||
@ -795,7 +797,9 @@ impl<T: EthSpec> BeaconState<T> {
|
|||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
let i = Self::cache_index(relative_epoch);
|
let i = Self::cache_index(relative_epoch);
|
||||||
|
|
||||||
if self.committee_caches[i].is_initialized_at(self.previous_epoch()) {
|
if self.committee_caches[i]
|
||||||
|
.is_initialized_at(relative_epoch.into_epoch(self.current_epoch()))
|
||||||
|
{
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
self.force_build_committee_cache(relative_epoch, spec)
|
self.force_build_committee_cache(relative_epoch, spec)
|
||||||
|
Loading…
Reference in New Issue
Block a user