Only insert default BankHashStats in Accounts::new_from_parent() (#30063)

This commit is contained in:
Brooks 2023-02-01 17:47:55 -05:00 committed by GitHub
parent cae2aae2f0
commit 33165040bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 20 deletions

View File

@ -208,7 +208,7 @@ impl Accounts {
pub fn new_from_parent(parent: &Accounts, slot: Slot, parent_slot: Slot) -> Self {
let accounts_db = parent.accounts_db.clone();
accounts_db.insert_default_bank_hash(slot, parent_slot);
accounts_db.insert_default_bank_hash_stats(slot, parent_slot);
Self {
accounts_db,
account_locks: Mutex::new(AccountLocks::default()),

View File

@ -4887,28 +4887,16 @@ impl AccountsDb {
}
}
/// Insert a new bank hash for `slot`
/// Insert a default bank hash stats for `slot`
///
/// The new bank hash is empty/default except for the slot. This fn is called when creating a
/// new bank from parent. The bank hash for this slot is updated with real values later.
pub fn insert_default_bank_hash(&self, slot: Slot, parent_slot: Slot) {
/// This fn is called when creating a new bank from parent.
pub fn insert_default_bank_hash_stats(&self, slot: Slot, parent_slot: Slot) {
let mut bank_hash_stats = self.bank_hash_stats.lock().unwrap();
if bank_hash_stats.get(&slot).is_some() {
error!(
"set_hash: already exists; multiple forks with shared slot {} as child (parent: {})!?",
slot, parent_slot,
);
error!( "set_hash: already exists; multiple forks with shared slot {slot} as child (parent: {parent_slot})!?");
return;
}
bank_hash_stats.insert(slot, BankHashStats::default());
drop(bank_hash_stats);
let old_accounts_delta_hash =
self.set_accounts_delta_hash(slot, AccountsDeltaHash::default());
assert!(old_accounts_delta_hash.is_none());
let old_accounts_hash = self.set_accounts_hash(slot, AccountsHash::default());
assert!(old_accounts_hash.is_none());
}
pub fn load(
@ -11911,13 +11899,13 @@ pub mod tests {
accounts.add_root(0);
let mut current_slot = 1;
accounts.insert_default_bank_hash(current_slot, current_slot - 1);
accounts.insert_default_bank_hash_stats(current_slot, current_slot - 1);
accounts.store_for_tests(current_slot, &[(&pubkey, &account)]);
accounts.calculate_accounts_delta_hash(current_slot);
accounts.add_root_and_flush_write_cache(current_slot);
current_slot += 1;
accounts.insert_default_bank_hash(current_slot, current_slot - 1);
accounts.insert_default_bank_hash_stats(current_slot, current_slot - 1);
accounts.store_for_tests(current_slot, &[(&pubkey, &zero_lamport_account)]);
accounts.calculate_accounts_delta_hash(current_slot);
accounts.add_root_and_flush_write_cache(current_slot);
@ -11926,7 +11914,7 @@ pub mod tests {
// Otherwise slot 2 will not be removed
current_slot += 1;
accounts.insert_default_bank_hash(current_slot, current_slot - 1);
accounts.insert_default_bank_hash_stats(current_slot, current_slot - 1);
accounts.calculate_accounts_delta_hash(current_slot);
accounts.add_root_and_flush_write_cache(current_slot);