Add ability to abort scan (#21314)
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							e540b1cf3c
						
					
				
				
					commit
					0f69a14247
				
			@@ -4,7 +4,7 @@ use crate::{
 | 
			
		||||
        LoadHint, LoadedAccount, ScanStorageResult, ACCOUNTS_DB_CONFIG_FOR_BENCHMARKS,
 | 
			
		||||
        ACCOUNTS_DB_CONFIG_FOR_TESTING,
 | 
			
		||||
    },
 | 
			
		||||
    accounts_index::{AccountSecondaryIndexes, IndexKey, ScanResult},
 | 
			
		||||
    accounts_index::{AccountSecondaryIndexes, IndexKey, ScanConfig, ScanResult},
 | 
			
		||||
    accounts_update_notifier_interface::AccountsUpdateNotifier,
 | 
			
		||||
    ancestors::Ancestors,
 | 
			
		||||
    bank::{
 | 
			
		||||
@@ -667,6 +667,7 @@ impl Accounts {
 | 
			
		||||
                    collector.push(Reverse((account.lamports(), *pubkey)));
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            ScanConfig::default(),
 | 
			
		||||
        )?;
 | 
			
		||||
        Ok(account_balances
 | 
			
		||||
            .into_sorted_vec()
 | 
			
		||||
@@ -744,6 +745,7 @@ impl Accounts {
 | 
			
		||||
        ancestors: &Ancestors,
 | 
			
		||||
        bank_id: BankId,
 | 
			
		||||
        program_id: &Pubkey,
 | 
			
		||||
        config: ScanConfig,
 | 
			
		||||
    ) -> ScanResult<Vec<(Pubkey, AccountSharedData)>> {
 | 
			
		||||
        self.accounts_db.scan_accounts(
 | 
			
		||||
            ancestors,
 | 
			
		||||
@@ -753,6 +755,7 @@ impl Accounts {
 | 
			
		||||
                    account.owner() == program_id
 | 
			
		||||
                })
 | 
			
		||||
            },
 | 
			
		||||
            config,
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -762,6 +765,7 @@ impl Accounts {
 | 
			
		||||
        bank_id: BankId,
 | 
			
		||||
        program_id: &Pubkey,
 | 
			
		||||
        filter: F,
 | 
			
		||||
        config: ScanConfig,
 | 
			
		||||
    ) -> ScanResult<Vec<(Pubkey, AccountSharedData)>> {
 | 
			
		||||
        self.accounts_db.scan_accounts(
 | 
			
		||||
            ancestors,
 | 
			
		||||
@@ -771,6 +775,7 @@ impl Accounts {
 | 
			
		||||
                    account.owner() == program_id && filter(account)
 | 
			
		||||
                })
 | 
			
		||||
            },
 | 
			
		||||
            config,
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -780,6 +785,7 @@ impl Accounts {
 | 
			
		||||
        bank_id: BankId,
 | 
			
		||||
        index_key: &IndexKey,
 | 
			
		||||
        filter: F,
 | 
			
		||||
        config: ScanConfig,
 | 
			
		||||
    ) -> ScanResult<Vec<(Pubkey, AccountSharedData)>> {
 | 
			
		||||
        self.accounts_db
 | 
			
		||||
            .index_scan_accounts(
 | 
			
		||||
@@ -791,6 +797,7 @@ impl Accounts {
 | 
			
		||||
                        filter(account)
 | 
			
		||||
                    })
 | 
			
		||||
                },
 | 
			
		||||
                config,
 | 
			
		||||
            )
 | 
			
		||||
            .map(|result| result.0)
 | 
			
		||||
    }
 | 
			
		||||
@@ -814,6 +821,7 @@ impl Accounts {
 | 
			
		||||
                    collector.push((*pubkey, account, slot))
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            ScanConfig::default(),
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -835,7 +843,7 @@ impl Accounts {
 | 
			
		||||
            "load_to_collect_rent_eagerly_scan_elapsed",
 | 
			
		||||
            ancestors,
 | 
			
		||||
            range,
 | 
			
		||||
            true,
 | 
			
		||||
            ScanConfig::new(true),
 | 
			
		||||
            |collector: &mut Vec<(Pubkey, AccountSharedData)>, option| {
 | 
			
		||||
                Self::load_while_filtering(collector, option, |_| true)
 | 
			
		||||
            },
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user