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),
|
||||
(
|
||||
"total_not_rent_exempt_with_duplicates",
|
||||
"total_rent_paying_with_duplicates",
|
||||
self.total_duplicates.saturating_sub(self.rent_exempt) as i64,
|
||||
i64
|
||||
),
|
||||
|
@ -6362,11 +6362,12 @@ impl Bank {
|
||||
|
||||
/// Scan all the accounts for this bank and collect stats
|
||||
pub fn get_total_accounts_stats(bank: &Bank) -> ScanResult<TotalAccountsStats> {
|
||||
let rent_collector = bank.rent_collector();
|
||||
bank.rc.accounts.accounts_db.scan_accounts(
|
||||
&Ancestors::default(),
|
||||
bank.bank_id(),
|
||||
|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.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.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,
|
||||
/// Total data size of executable accounts
|
||||
pub executable_data_len: usize,
|
||||
|
||||
/// Total number of rent exempt accounts
|
||||
pub num_rent_exempt_accounts: usize,
|
||||
}
|
||||
|
||||
impl Drop for Bank {
|
||||
|
@ -60,7 +60,6 @@ impl RentCollector {
|
||||
rent_for_sysvars: bool,
|
||||
) -> bool {
|
||||
!(account.executable() // executable accounts must be rent-exempt balance
|
||||
|| account.rent_epoch() > self.epoch
|
||||
|| (!rent_for_sysvars && sysvar::check_id(account.owner()))
|
||||
|| *address == incinerator::id())
|
||||
}
|
||||
@ -95,6 +94,7 @@ impl RentCollector {
|
||||
filler_account_suffix: Option<&Pubkey>,
|
||||
) -> u64 {
|
||||
if !self.should_collect_rent(address, account, rent_for_sysvars)
|
||||
|| account.rent_epoch() > self.epoch
|
||||
|| crate::accounts_db::AccountsDb::is_filler_account_helper(
|
||||
address,
|
||||
filler_account_suffix,
|
||||
|
Reference in New Issue
Block a user