From 33165040bf3a1d10451fcc0ac2371486d75ca245 Mon Sep 17 00:00:00 2001 From: Brooks Date: Wed, 1 Feb 2023 17:47:55 -0500 Subject: [PATCH] Only insert default BankHashStats in Accounts::new_from_parent() (#30063) --- runtime/src/accounts.rs | 2 +- runtime/src/accounts_db.rs | 26 +++++++------------------- 2 files changed, 8 insertions(+), 20 deletions(-) diff --git a/runtime/src/accounts.rs b/runtime/src/accounts.rs index edec3eb87a..ecea8ad477 100644 --- a/runtime/src/accounts.rs +++ b/runtime/src/accounts.rs @@ -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()), diff --git a/runtime/src/accounts_db.rs b/runtime/src/accounts_db.rs index 006583bcda..78bc07bc46 100644 --- a/runtime/src/accounts_db.rs +++ b/runtime/src/accounts_db.rs @@ -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);