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 {
|
pub(crate) fn new_empty(accounts_db: AccountsDb) -> Self {
|
||||||
Self::new(Arc::new(accounts_db))
|
Self::new(Arc::new(accounts_db))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn new(accounts_db: Arc<AccountsDb>) -> Self {
|
pub(crate) fn new(accounts_db: Arc<AccountsDb>) -> Self {
|
||||||
Self {
|
Self {
|
||||||
accounts_db,
|
accounts_db,
|
||||||
account_locks: Mutex::new(AccountLocks::default()),
|
account_locks: Mutex::new(AccountLocks::default()),
|
||||||
|
|
|
@ -4978,7 +4978,7 @@ impl AccountsDb {
|
||||||
/// Insert a default bank hash stats for `slot`
|
/// Insert a default bank hash stats for `slot`
|
||||||
///
|
///
|
||||||
/// This fn is called when creating a new bank from parent.
|
/// 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();
|
let mut bank_hash_stats = self.bank_hash_stats.lock().unwrap();
|
||||||
if bank_hash_stats.get(&slot).is_some() {
|
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})!?");
|
||||||
|
|
|
@ -1492,15 +1492,15 @@ impl Bank {
|
||||||
let epoch_schedule = parent.epoch_schedule;
|
let epoch_schedule = parent.epoch_schedule;
|
||||||
let epoch = epoch_schedule.get_epoch(slot);
|
let epoch = epoch_schedule.get_epoch(slot);
|
||||||
|
|
||||||
let (rc, bank_rc_creation_time_us) = measure_us!(BankRc {
|
let (rc, bank_rc_creation_time_us) = measure_us!({
|
||||||
accounts: Arc::new(Accounts::new_from_parent(
|
let accounts_db = Arc::clone(&parent.rc.accounts.accounts_db);
|
||||||
&parent.rc.accounts,
|
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,
|
slot,
|
||||||
parent.slot(),
|
bank_id_generator: Arc::clone(&parent.rc.bank_id_generator),
|
||||||
)),
|
}
|
||||||
parent: RwLock::new(Some(parent.clone())),
|
|
||||||
slot,
|
|
||||||
bank_id_generator: parent.rc.bank_id_generator.clone(),
|
|
||||||
});
|
});
|
||||||
|
|
||||||
let (status_cache, status_cache_time_us) = measure_us!(Arc::clone(&parent.status_cache));
|
let (status_cache, status_cache_time_us) = measure_us!(Arc::clone(&parent.status_cache));
|
||||||
|
|
Loading…
Reference in New Issue