diff --git a/accounts-db/src/accounts_db.rs b/accounts-db/src/accounts_db.rs index a93cfcb121a788..6d1e677d094dd3 100644 --- a/accounts-db/src/accounts_db.rs +++ b/accounts-db/src/accounts_db.rs @@ -18109,14 +18109,19 @@ pub mod tests { slot, &[(&pubkey, &account), (&Pubkey::new_unique(), &account)], ); - accounts_db.calculate_accounts_delta_hash(slot); accounts_db.add_root_and_flush_write_cache(slot); + // ensure this slot is *not* in the dirty_stores or uncleaned_pubkeys, because we want to + // test cleaning *old* storages, i.e. when they aren't explicitly marked for cleaning + assert!(!accounts_db.dirty_stores.contains_key(&slot)); + assert!(!accounts_db.uncleaned_pubkeys.contains_key(&slot)); } - // for this test, `new_slot` must not be in the uncleaned_roots list - accounts_db.accounts_index.remove_uncleaned_root(new_slot); - assert!(accounts_db.accounts_index.is_uncleaned_root(old_slot)); - assert!(!accounts_db.accounts_index.is_uncleaned_root(new_slot)); + // add `old_slot` to the dirty stores list to mimic it being picked up as old + let old_storage = accounts_db + .storage + .get_slot_storage_entry_shrinking_in_progress_ok(old_slot) + .unwrap(); + accounts_db.dirty_stores.insert(old_slot, old_storage); // ensure the slot list for `pubkey` has both the old and new slots let slot_list = accounts_db @@ -18164,13 +18169,14 @@ pub mod tests { &[(&pubkey, &account), (&Pubkey::new_unique(), &account)], ); accounts_db.calculate_accounts_delta_hash(slot); + // ensure this slot is in uncleaned_pubkeys (but not dirty_stores) so it'll be cleaned + assert!(!accounts_db.dirty_stores.contains_key(&slot)); + assert!(accounts_db.uncleaned_pubkeys.contains_key(&slot)); } - // do not root `new_slot`! - accounts_db.add_root_and_flush_write_cache(old_slot); - // for this test, `new_slot` must not be a root - assert!(accounts_db.accounts_index.is_uncleaned_root(old_slot)); - assert!(!accounts_db.accounts_index.is_uncleaned_root(new_slot)); + // only `old_slot` should be rooted, not `new_slot` + accounts_db.add_root_and_flush_write_cache(old_slot); + assert!(accounts_db.accounts_index.is_alive_root(old_slot)); assert!(!accounts_db.accounts_index.is_alive_root(new_slot)); // ensure the slot list for `pubkey` has both the old and new slots