State cache tweaks (#7095)

Backport of:

- https://github.com/sigp/lighthouse/pull/7067

For:

- https://github.com/sigp/lighthouse/issues/7039


  - Prevent writing to state cache when migrating the database
- Add `state-cache-headroom` flag to control pruning
- Prune old epoch boundary states ahead of mid-epoch states
- Never prune head block's state
- Avoid caching ancestor states unless they are on an epoch boundary
- Log when states enter/exit the cache

Co-authored-by: Eitan Seri-Levi <eserilev@ucsc.edu>
This commit is contained in:
Michael Sproul
2025-03-18 13:10:21 +11:00
committed by GitHub
parent 8ce9edc584
commit 4de062626b
29 changed files with 358 additions and 114 deletions

View File

@@ -1883,6 +1883,21 @@ fn state_cache_size_flag() {
.with_config(|config| assert_eq!(config.store.state_cache_size, new_non_zero_usize(64)));
}
#[test]
fn state_cache_headroom_default() {
CommandLineTest::new()
.run_with_zero_port()
.with_config(|config| assert_eq!(config.store.state_cache_headroom, new_non_zero_usize(1)));
}
#[test]
fn state_cache_headroom_flag() {
CommandLineTest::new()
.flag("state-cache-headroom", Some("16"))
.run_with_zero_port()
.with_config(|config| {
assert_eq!(config.store.state_cache_headroom, new_non_zero_usize(16))
});
}
#[test]
fn historic_state_cache_size_flag() {
CommandLineTest::new()
.flag("historic-state-cache-size", Some("4"))