shrink stops using HandleReclaims (#26594)

This commit is contained in:
Jeff Washington (jwash) 2022-07-15 17:54:48 -05:00 committed by GitHub
parent 83c614da3c
commit be8813e588
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 96 additions and 2 deletions

View File

@ -7754,8 +7754,7 @@ impl AccountsDb {
let mut update_index_time = Measure::start("update_index");
let reclaim = if matches!(reclaim, StoreReclaims::Ignore) {
// would like this to be: UpsertReclaim::IgnoreReclaims
UpsertReclaim::PopulateReclaims
UpsertReclaim::IgnoreReclaims
} else if self.caching_enabled && is_cached_store {
UpsertReclaim::PreviousSlotEntryWasCached
} else {

View File

@ -2758,6 +2758,101 @@ pub mod tests {
);
assert_eq!(num, 0);
}
#[test]
fn test_insert_ignore_reclaims() {
{
// non-cached
let key = Keypair::new();
let index = AccountsIndex::<u64>::default_for_tests();
let mut reclaims = Vec::new();
let slot = 0;
let value = 1;
assert!(!value.is_cached());
index.upsert(
slot,
slot,
&key.pubkey(),
&AccountSharedData::default(),
&AccountSecondaryIndexes::default(),
value,
&mut reclaims,
UpsertReclaim::PopulateReclaims,
);
assert!(reclaims.is_empty());
index.upsert(
slot,
slot,
&key.pubkey(),
&AccountSharedData::default(),
&AccountSecondaryIndexes::default(),
value,
&mut reclaims,
UpsertReclaim::PopulateReclaims,
);
// reclaimed
assert!(!reclaims.is_empty());
reclaims.clear();
index.upsert(
slot,
slot,
&key.pubkey(),
&AccountSharedData::default(),
&AccountSecondaryIndexes::default(),
value,
&mut reclaims,
// since IgnoreReclaims, we should expect reclaims to be empty
UpsertReclaim::IgnoreReclaims,
);
// reclaims is ignored
assert!(reclaims.is_empty());
}
{
// cached
let key = Keypair::new();
let index = AccountsIndex::<AccountInfoTest>::default_for_tests();
let mut reclaims = Vec::new();
let slot = 0;
let value = 1.0;
assert!(value.is_cached());
index.upsert(
slot,
slot,
&key.pubkey(),
&AccountSharedData::default(),
&AccountSecondaryIndexes::default(),
value,
&mut reclaims,
UpsertReclaim::PopulateReclaims,
);
assert!(reclaims.is_empty());
index.upsert(
slot,
slot,
&key.pubkey(),
&AccountSharedData::default(),
&AccountSecondaryIndexes::default(),
value,
&mut reclaims,
UpsertReclaim::PopulateReclaims,
);
// reclaimed
assert!(!reclaims.is_empty());
reclaims.clear();
index.upsert(
slot,
slot,
&key.pubkey(),
&AccountSharedData::default(),
&AccountSecondaryIndexes::default(),
value,
&mut reclaims,
// since IgnoreReclaims, we should expect reclaims to be empty
UpsertReclaim::IgnoreReclaims,
);
// reclaims is ignored
assert!(reclaims.is_empty());
}
}
#[test]
fn test_insert_with_ancestors() {