Refactors Accounts::new_from_parent() (#30475)
This commit is contained in:
parent
2c7d9f988e
commit
b7d31e134c
|
@ -199,17 +199,11 @@ 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_stats(slot, parent_slot);
|
||||
Self::new(accounts_db)
|
||||
}
|
||||
|
||||
pub(crate) fn new_empty(accounts_db: AccountsDb) -> Self {
|
||||
Self::new(Arc::new(accounts_db))
|
||||
}
|
||||
|
||||
fn new(accounts_db: Arc<AccountsDb>) -> Self {
|
||||
pub(crate) fn new(accounts_db: Arc<AccountsDb>) -> Self {
|
||||
Self {
|
||||
accounts_db,
|
||||
account_locks: Mutex::new(AccountLocks::default()),
|
||||
|
|
|
@ -4978,10 +4978,10 @@ impl AccountsDb {
|
|||
/// Insert a default bank hash stats for `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) {
|
||||
pub(crate) 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 {slot} as child (parent: {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());
|
||||
|
|
|
@ -1492,15 +1492,15 @@ impl Bank {
|
|||
let epoch_schedule = parent.epoch_schedule;
|
||||
let epoch = epoch_schedule.get_epoch(slot);
|
||||
|
||||
let (rc, bank_rc_creation_time_us) = measure_us!(BankRc {
|
||||
accounts: Arc::new(Accounts::new_from_parent(
|
||||
&parent.rc.accounts,
|
||||
let (rc, bank_rc_creation_time_us) = measure_us!({
|
||||
let accounts_db = Arc::clone(&parent.rc.accounts.accounts_db);
|
||||
accounts_db.insert_default_bank_hash_stats(slot, parent.slot());
|
||||
BankRc {
|
||||
accounts: Arc::new(Accounts::new(accounts_db)),
|
||||
parent: RwLock::new(Some(Arc::clone(parent))),
|
||||
slot,
|
||||
parent.slot(),
|
||||
)),
|
||||
parent: RwLock::new(Some(parent.clone())),
|
||||
slot,
|
||||
bank_id_generator: parent.rc.bank_id_generator.clone(),
|
||||
bank_id_generator: Arc::clone(&parent.rc.bank_id_generator),
|
||||
}
|
||||
});
|
||||
|
||||
let (status_cache, status_cache_time_us) = measure_us!(Arc::clone(&parent.status_cache));
|
||||
|
|
Loading…
Reference in New Issue