Skip to content

Commit

Permalink
v1.17: Skip shrink until startup verification is complete (backport of
Browse files Browse the repository at this point in the history
  • Loading branch information
mergify[bot] authored Nov 30, 2023
1 parent ff1d9a6 commit 4abd18f
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions runtime/src/accounts_background_service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -708,9 +708,21 @@ impl AccountsBackgroundService {
bank.force_flush_accounts_cache();
bank.clean_accounts(last_full_snapshot_slot);
last_cleaned_block_height = bank.block_height();
bank.shrink_ancient_slots();
// See justification below for why we skip 'shrink' here.
if bank.is_startup_verification_complete() {
bank.shrink_ancient_slots();
}
}
// Do not 'shrink' until *after* the startup verification is complete.
// This is because startup verification needs to get the snapshot
// storages *as they existed at startup* (to calculate the accounts hash).
// If 'shrink' were to run, then it is possible startup verification
// (1) could race with 'shrink', and fail to assert that shrinking is not in
// progress, or (2) could get snapshot storages that were newer than what
// was in the snapshot itself.
if bank.is_startup_verification_complete() {
bank.shrink_candidate_slots();
}
bank.shrink_candidate_slots();
}
stats.record_and_maybe_submit(start_time.elapsed());
sleep(Duration::from_millis(INTERVAL_MS));
Expand Down

0 comments on commit 4abd18f

Please sign in to comment.