remove process_stale_slot_with_budget (#29236)

This commit is contained in:
Jeff Washington (jwash) 2022-12-13 09:50:14 -06:00 committed by GitHub
parent c8e7c706df
commit b779134020
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 97 deletions

View File

@ -32,9 +32,6 @@ use {
};
const INTERVAL_MS: u64 = 100;
const SHRUNKEN_ACCOUNT_PER_SEC: usize = 250;
const SHRUNKEN_ACCOUNT_PER_INTERVAL: usize =
SHRUNKEN_ACCOUNT_PER_SEC / (1000 / INTERVAL_MS as usize);
const CLEAN_INTERVAL_BLOCKS: u64 = 100;
// This value is chosen to spread the dropping cost over 3 expiration checks
@ -264,7 +261,7 @@ impl SnapshotRequestHandler {
fn handle_snapshot_request(
&self,
accounts_db_caching_enabled: bool,
_accounts_db_caching_enabled: bool,
test_hash_calculation: bool,
non_snapshot_time_us: u128,
last_full_snapshot_slot: &mut Option<Slot>,
@ -300,12 +297,6 @@ impl SnapshotRequestHandler {
)
});
let mut shrink_time = Measure::start("shrink_time");
if !accounts_db_caching_enabled {
snapshot_root_bank.process_stale_slot_with_budget(0, SHRUNKEN_ACCOUNT_PER_INTERVAL);
}
shrink_time.stop();
let mut flush_accounts_cache_time = Measure::start("flush_accounts_cache_time");
// Forced cache flushing MUST flush all roots <= snapshot_root_bank.slot().
// That's because `snapshot_root_bank.slot()` must be root at this point,
@ -355,11 +346,9 @@ impl SnapshotRequestHandler {
snapshot_root_bank.clean_accounts(*last_full_snapshot_slot);
clean_time.stop();
if accounts_db_caching_enabled {
shrink_time = Measure::start("shrink_time");
snapshot_root_bank.shrink_candidate_slots();
shrink_time.stop();
}
let mut shrink_time = Measure::start("shrink_time");
snapshot_root_bank.shrink_candidate_slots();
shrink_time.stop();
// Snapshot the bank and send over an accounts package
let mut snapshot_time = Measure::start("snapshot_time");
@ -541,10 +530,8 @@ impl AccountsBackgroundService {
test_hash_calculation: bool,
mut last_full_snapshot_slot: Option<Slot>,
) -> Self {
let accounts_db_caching_enabled = true;
info!("AccountsBackgroundService active");
let exit = exit.clone();
let mut consumed_budget = 0;
let mut last_cleaned_block_height = 0;
let mut removed_slots_count = 0;
let mut total_remove_slots_time = 0;
@ -633,19 +620,7 @@ impl AccountsBackgroundService {
return;
}
} else {
if accounts_db_caching_enabled {
bank.shrink_candidate_slots();
} else {
// under sustained writes, shrink can lag behind so cap to
// SHRUNKEN_ACCOUNT_PER_INTERVAL (which is based on INTERVAL_MS,
// which in turn roughly associated block time)
consumed_budget = bank
.process_stale_slot_with_budget(
consumed_budget,
SHRUNKEN_ACCOUNT_PER_INTERVAL,
)
.min(SHRUNKEN_ACCOUNT_PER_INTERVAL);
}
bank.shrink_candidate_slots();
if bank.block_height() - last_cleaned_block_height
> (CLEAN_INTERVAL_BLOCKS + thread_rng().gen_range(0, 10))
{

View File

@ -7378,16 +7378,6 @@ impl Bank {
self.rc.accounts.accounts_db.print_accounts_stats("");
}
/// This is part of the code path executed when the write cache is disabled.
/// It is no longer possible to disable the write cache.
pub fn process_stale_slot_with_budget(
&self,
mut _consumed_budget: usize,
_budget_recovery_delta: usize,
) -> usize {
unimplemented!("");
}
pub fn bank_tranaction_count_fix_enabled(&self) -> bool {
self.feature_set
.is_active(&feature_set::bank_tranaction_count_fix::id())
@ -14864,63 +14854,6 @@ pub(crate) mod tests {
assert_eq!(alive_counts, vec![11, 1, 7]);
}
// process_stale_slot_with_budget is no longer called. We'll remove this test when we remove the function
#[test]
#[ignore] // this test only works when not using the write cache
fn test_process_stale_slot_with_budget() {
solana_logger::setup();
let pubkey1 = solana_sdk::pubkey::new_rand();
let pubkey2 = solana_sdk::pubkey::new_rand();
// this test only tests non-write cache code
// Tests need to default to use write cache by default for all tests.
// Once that happens, the code this test tests can be deleted, along with this test.
let (genesis_config, _mint_keypair) = create_genesis_config(1_000_000_000);
let mut bank = Arc::new(Bank::new_with_config_for_tests(
&genesis_config,
AccountSecondaryIndexes::default(),
AccountShrinkThreshold::default(),
));
bank.restore_old_behavior_for_fragile_tests();
assert_eq!(bank.process_stale_slot_with_budget(0, 0), 0);
assert_eq!(bank.process_stale_slot_with_budget(133, 0), 133);
assert_eq!(bank.process_stale_slot_with_budget(0, 100), 0);
assert_eq!(bank.process_stale_slot_with_budget(33, 100), 0);
assert_eq!(bank.process_stale_slot_with_budget(133, 100), 33);
goto_end_of_slot(Arc::<Bank>::get_mut(&mut bank).unwrap());
bank.squash();
let some_lamports = 123;
let mut bank = Arc::new(new_from_parent(&bank));
bank.deposit(&pubkey1, some_lamports).unwrap();
bank.deposit(&pubkey2, some_lamports).unwrap();
goto_end_of_slot(Arc::<Bank>::get_mut(&mut bank).unwrap());
let mut bank = Arc::new(new_from_parent(&bank));
bank.deposit(&pubkey1, some_lamports).unwrap();
goto_end_of_slot(Arc::<Bank>::get_mut(&mut bank).unwrap());
bank.squash();
bank.clean_accounts_for_tests();
let force_to_return_alive_account = 0;
assert_eq!(
bank.process_stale_slot_with_budget(22, force_to_return_alive_account),
22
);
let consumed_budgets: usize = (0..3)
.map(|_| bank.process_stale_slot_with_budget(0, force_to_return_alive_account))
.sum();
// consumed_budgets represents the count of alive accounts in the three slots 0,1,2
assert_eq!(consumed_budgets, 12);
}
#[test]
fn test_add_builtin_no_overwrite() {
#[allow(clippy::unnecessary_wraps)]