add rent exempt count to get_total_accounts_stats (#21153)
This commit is contained in:
committed by
GitHub
parent
e765542cd8
commit
171243a370
@ -264,7 +264,7 @@ impl GenerateIndexTimings {
|
|||||||
),
|
),
|
||||||
("index_flush_us", self.index_flush_us as i64, i64),
|
("index_flush_us", self.index_flush_us as i64, i64),
|
||||||
(
|
(
|
||||||
"total_not_rent_exempt_with_duplicates",
|
"total_rent_paying_with_duplicates",
|
||||||
self.total_duplicates.saturating_sub(self.rent_exempt) as i64,
|
self.total_duplicates.saturating_sub(self.rent_exempt) as i64,
|
||||||
i64
|
i64
|
||||||
),
|
),
|
||||||
|
@ -6362,11 +6362,12 @@ impl Bank {
|
|||||||
|
|
||||||
/// Scan all the accounts for this bank and collect stats
|
/// Scan all the accounts for this bank and collect stats
|
||||||
pub fn get_total_accounts_stats(bank: &Bank) -> ScanResult<TotalAccountsStats> {
|
pub fn get_total_accounts_stats(bank: &Bank) -> ScanResult<TotalAccountsStats> {
|
||||||
|
let rent_collector = bank.rent_collector();
|
||||||
bank.rc.accounts.accounts_db.scan_accounts(
|
bank.rc.accounts.accounts_db.scan_accounts(
|
||||||
&Ancestors::default(),
|
&Ancestors::default(),
|
||||||
bank.bank_id(),
|
bank.bank_id(),
|
||||||
|total_accounts_stats: &mut TotalAccountsStats, item| {
|
|total_accounts_stats: &mut TotalAccountsStats, item| {
|
||||||
if let Some((_pubkey, account, _slot)) = item {
|
if let Some((pubkey, account, _slot)) = item {
|
||||||
total_accounts_stats.num_accounts += 1;
|
total_accounts_stats.num_accounts += 1;
|
||||||
total_accounts_stats.data_len += account.data().len();
|
total_accounts_stats.data_len += account.data().len();
|
||||||
|
|
||||||
@ -6374,6 +6375,13 @@ pub fn get_total_accounts_stats(bank: &Bank) -> ScanResult<TotalAccountsStats> {
|
|||||||
total_accounts_stats.num_executable_accounts += 1;
|
total_accounts_stats.num_executable_accounts += 1;
|
||||||
total_accounts_stats.executable_data_len += account.data().len();
|
total_accounts_stats.executable_data_len += account.data().len();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !rent_collector.should_collect_rent(pubkey, &account, false) || {
|
||||||
|
let (_rent_due, exempt) = rent_collector.get_rent_due(&account);
|
||||||
|
exempt
|
||||||
|
} {
|
||||||
|
total_accounts_stats.num_rent_exempt_accounts += 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@ -6391,6 +6399,9 @@ pub struct TotalAccountsStats {
|
|||||||
pub num_executable_accounts: usize,
|
pub num_executable_accounts: usize,
|
||||||
/// Total data size of executable accounts
|
/// Total data size of executable accounts
|
||||||
pub executable_data_len: usize,
|
pub executable_data_len: usize,
|
||||||
|
|
||||||
|
/// Total number of rent exempt accounts
|
||||||
|
pub num_rent_exempt_accounts: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Drop for Bank {
|
impl Drop for Bank {
|
||||||
|
@ -60,7 +60,6 @@ impl RentCollector {
|
|||||||
rent_for_sysvars: bool,
|
rent_for_sysvars: bool,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
!(account.executable() // executable accounts must be rent-exempt balance
|
!(account.executable() // executable accounts must be rent-exempt balance
|
||||||
|| account.rent_epoch() > self.epoch
|
|
||||||
|| (!rent_for_sysvars && sysvar::check_id(account.owner()))
|
|| (!rent_for_sysvars && sysvar::check_id(account.owner()))
|
||||||
|| *address == incinerator::id())
|
|| *address == incinerator::id())
|
||||||
}
|
}
|
||||||
@ -95,6 +94,7 @@ impl RentCollector {
|
|||||||
filler_account_suffix: Option<&Pubkey>,
|
filler_account_suffix: Option<&Pubkey>,
|
||||||
) -> u64 {
|
) -> u64 {
|
||||||
if !self.should_collect_rent(address, account, rent_for_sysvars)
|
if !self.should_collect_rent(address, account, rent_for_sysvars)
|
||||||
|
|| account.rent_epoch() > self.epoch
|
||||||
|| crate::accounts_db::AccountsDb::is_filler_account_helper(
|
|| crate::accounts_db::AccountsDb::is_filler_account_helper(
|
||||||
address,
|
address,
|
||||||
filler_account_suffix,
|
filler_account_suffix,
|
||||||
|
Reference in New Issue
Block a user