add rent exempt count to get_total_accounts_stats (#21153)

This commit is contained in:
Jeff Washington (jwash)
2021-11-04 11:17:19 -05:00
committed by GitHub
parent e765542cd8
commit 171243a370
3 changed files with 14 additions and 3 deletions

View File

@ -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
),

View File

@ -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 {

View File

@ -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,