Add accounts_data_len to Bank (#21781)
This commit is contained in:
parent
e08139f949
commit
eeb97fe7ce
|
@ -146,7 +146,10 @@ use {
|
||||||
ptr,
|
ptr,
|
||||||
rc::Rc,
|
rc::Rc,
|
||||||
sync::{
|
sync::{
|
||||||
atomic::{AtomicBool, AtomicU64, Ordering::Relaxed},
|
atomic::{
|
||||||
|
AtomicBool, AtomicU64,
|
||||||
|
Ordering::{Acquire, Relaxed, Release},
|
||||||
|
},
|
||||||
Arc, LockResult, RwLock, RwLockReadGuard, RwLockWriteGuard,
|
Arc, LockResult, RwLock, RwLockReadGuard, RwLockWriteGuard,
|
||||||
},
|
},
|
||||||
time::{Duration, Instant},
|
time::{Duration, Instant},
|
||||||
|
@ -1042,6 +1045,10 @@ pub struct Bank {
|
||||||
pub cost_tracker: RwLock<CostTracker>,
|
pub cost_tracker: RwLock<CostTracker>,
|
||||||
|
|
||||||
sysvar_cache: RwLock<Vec<(Pubkey, Vec<u8>)>>,
|
sysvar_cache: RwLock<Vec<(Pubkey, Vec<u8>)>>,
|
||||||
|
|
||||||
|
/// Current size of the accounts data. Used when processing messages to enforce a limit on its
|
||||||
|
/// maximum size.
|
||||||
|
accounts_data_len: AtomicU64,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for BlockhashQueue {
|
impl Default for BlockhashQueue {
|
||||||
|
@ -1127,7 +1134,7 @@ impl Bank {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn default_with_accounts(accounts: Accounts) -> Self {
|
fn default_with_accounts(accounts: Accounts) -> Self {
|
||||||
Self {
|
let bank = Self {
|
||||||
rc: BankRc::new(accounts, Slot::default()),
|
rc: BankRc::new(accounts, Slot::default()),
|
||||||
src: StatusCacheRc::default(),
|
src: StatusCacheRc::default(),
|
||||||
blockhash_queue: RwLock::<BlockhashQueue>::default(),
|
blockhash_queue: RwLock::<BlockhashQueue>::default(),
|
||||||
|
@ -1183,7 +1190,14 @@ impl Bank {
|
||||||
vote_only_bank: false,
|
vote_only_bank: false,
|
||||||
cost_tracker: RwLock::<CostTracker>::default(),
|
cost_tracker: RwLock::<CostTracker>::default(),
|
||||||
sysvar_cache: RwLock::new(Vec::new()),
|
sysvar_cache: RwLock::new(Vec::new()),
|
||||||
}
|
accounts_data_len: AtomicU64::default(),
|
||||||
|
};
|
||||||
|
|
||||||
|
let total_accounts_stats = bank.get_total_accounts_stats().unwrap();
|
||||||
|
bank.accounts_data_len
|
||||||
|
.store(total_accounts_stats.data_len as u64, Release);
|
||||||
|
|
||||||
|
bank
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_with_paths_for_tests(
|
pub fn new_with_paths_for_tests(
|
||||||
|
@ -1429,6 +1443,7 @@ impl Bank {
|
||||||
freeze_started: AtomicBool::new(false),
|
freeze_started: AtomicBool::new(false),
|
||||||
cost_tracker: RwLock::new(CostTracker::default()),
|
cost_tracker: RwLock::new(CostTracker::default()),
|
||||||
sysvar_cache: RwLock::new(Vec::new()),
|
sysvar_cache: RwLock::new(Vec::new()),
|
||||||
|
accounts_data_len: AtomicU64::new(parent.accounts_data_len.load(Acquire)),
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut ancestors = Vec::with_capacity(1 + new.parents().len());
|
let mut ancestors = Vec::with_capacity(1 + new.parents().len());
|
||||||
|
@ -1541,6 +1556,7 @@ impl Bank {
|
||||||
debug_keys: Option<Arc<HashSet<Pubkey>>>,
|
debug_keys: Option<Arc<HashSet<Pubkey>>>,
|
||||||
additional_builtins: Option<&Builtins>,
|
additional_builtins: Option<&Builtins>,
|
||||||
debug_do_not_add_builtins: bool,
|
debug_do_not_add_builtins: bool,
|
||||||
|
accounts_data_len: u64,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
fn new<T: Default>() -> T {
|
fn new<T: Default>() -> T {
|
||||||
T::default()
|
T::default()
|
||||||
|
@ -1603,6 +1619,7 @@ impl Bank {
|
||||||
vote_only_bank: false,
|
vote_only_bank: false,
|
||||||
cost_tracker: RwLock::new(CostTracker::default()),
|
cost_tracker: RwLock::new(CostTracker::default()),
|
||||||
sysvar_cache: RwLock::new(Vec::new()),
|
sysvar_cache: RwLock::new(Vec::new()),
|
||||||
|
accounts_data_len: AtomicU64::new(accounts_data_len),
|
||||||
};
|
};
|
||||||
bank.finish_init(
|
bank.finish_init(
|
||||||
genesis_config,
|
genesis_config,
|
||||||
|
|
|
@ -347,10 +347,6 @@ where
|
||||||
accounts_db_config,
|
accounts_db_config,
|
||||||
accounts_update_notifier,
|
accounts_update_notifier,
|
||||||
)?;
|
)?;
|
||||||
debug!(
|
|
||||||
"accounts data len: {}",
|
|
||||||
reconstructed_accounts_db_info.accounts_data_len
|
|
||||||
);
|
|
||||||
|
|
||||||
let bank_rc = BankRc::new(Accounts::new_empty(accounts_db), bank_fields.slot);
|
let bank_rc = BankRc::new(Accounts::new_empty(accounts_db), bank_fields.slot);
|
||||||
|
|
||||||
|
@ -363,6 +359,7 @@ where
|
||||||
debug_keys,
|
debug_keys,
|
||||||
additional_builtins,
|
additional_builtins,
|
||||||
debug_do_not_add_builtins,
|
debug_do_not_add_builtins,
|
||||||
|
reconstructed_accounts_db_info.accounts_data_len,
|
||||||
);
|
);
|
||||||
|
|
||||||
info!("rent_collector: {:?}", bank.rent_collector());
|
info!("rent_collector: {:?}", bank.rent_collector());
|
||||||
|
|
Loading…
Reference in New Issue