Skip to content

Conversation

@eserilev
Copy link
Member

@eserilev eserilev commented Mar 28, 2025

Issue Addressed

This is a workaround for #7216

Proposed Changes

In the case of gaps between the in-memory pub key cache and its on-disk representation, use the head state on startup to "top-up" the cache/db w/ any missing validators

@eserilev eserilev added database v7.0.0 New release c. Q1 2025 ready-for-review The code is ready for review labels Mar 28, 2025
// If any validators weren't persisted to disk on previous runs, this will use the genesis_state to
// "top-up" the in-memory validator cache and its on-disk representation with any missing validators.
let pubkey_store_ops = pubkey_cache
.import_new_pubkeys(&genesis_state)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we wanna do this with the genesis state, we need the head state (or maybe the finalized state, but the head would be better)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here:

let (_head_state_root, head_state) = store
.get_advanced_hot_state(head_block_root, current_slot, head_block.state_root())
.map_err(|e| descriptive_db_error("head state", &e))?
.ok_or("Head state not found in store")?;

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'd do the top up in the Ok case here:

let validator_pubkey_cache = self.validator_pubkey_cache.map(Ok).unwrap_or_else(|| {
ValidatorPubkeyCache::new(&head_snapshot.beacon_state, store.clone())
.map_err(|e| format!("Unable to init validator pubkey cache: {:?}", e))
})?;

Copy link
Member

@michaelsproul michaelsproul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@michaelsproul michaelsproul added ready-for-merge This PR is ready to merge. and removed ready-for-review The code is ready for review labels Mar 28, 2025
@mergify mergify bot merged commit a5ea05c into sigp:release-v7.0.0 Mar 28, 2025
31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

database ready-for-merge This PR is ready to merge. v7.0.0 New release c. Q1 2025

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants