borrow storages (#15088)
This commit is contained in:
committed by
GitHub
parent
e5225b7e68
commit
f49a70e626
@ -3628,7 +3628,7 @@ impl AccountsDB {
|
|||||||
|
|
||||||
/// Scan through all the account storage in parallel
|
/// Scan through all the account storage in parallel
|
||||||
fn scan_account_storage_no_bank<F, B>(
|
fn scan_account_storage_no_bank<F, B>(
|
||||||
snapshot_storages: SnapshotStorages,
|
snapshot_storages: &[SnapshotStorage],
|
||||||
scan_func: F,
|
scan_func: F,
|
||||||
) -> Vec<B>
|
) -> Vec<B>
|
||||||
where
|
where
|
||||||
@ -3722,7 +3722,7 @@ impl AccountsDB {
|
|||||||
let combined_maps = self.get_snapshot_storages(slot);
|
let combined_maps = self.get_snapshot_storages(slot);
|
||||||
|
|
||||||
Self::calculate_accounts_hash_without_index(
|
Self::calculate_accounts_hash_without_index(
|
||||||
combined_maps,
|
&combined_maps,
|
||||||
simple_capitalization_enabled,
|
simple_capitalization_enabled,
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
@ -3786,13 +3786,13 @@ impl AccountsDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn scan_snapshot_stores(
|
fn scan_snapshot_stores(
|
||||||
storage: SnapshotStorages,
|
storage: &[SnapshotStorage],
|
||||||
simple_capitalization_enabled: bool,
|
simple_capitalization_enabled: bool,
|
||||||
) -> (DashMap<Pubkey, CalculateHashIntermediate>, Measure) {
|
) -> (DashMap<Pubkey, CalculateHashIntermediate>, Measure) {
|
||||||
let map: DashMap<Pubkey, CalculateHashIntermediate> = DashMap::new();
|
let map: DashMap<Pubkey, CalculateHashIntermediate> = DashMap::new();
|
||||||
let mut time = Measure::start("scan all accounts");
|
let mut time = Measure::start("scan all accounts");
|
||||||
Self::scan_account_storage_no_bank(
|
Self::scan_account_storage_no_bank(
|
||||||
storage,
|
&storage,
|
||||||
|loaded_account: LoadedAccount,
|
|loaded_account: LoadedAccount,
|
||||||
_store_id: AppendVecId,
|
_store_id: AppendVecId,
|
||||||
_accum: &mut Vec<(Pubkey, CalculateHashIntermediate)>,
|
_accum: &mut Vec<(Pubkey, CalculateHashIntermediate)>,
|
||||||
@ -3824,7 +3824,7 @@ impl AccountsDB {
|
|||||||
// modeled after get_accounts_delta_hash
|
// modeled after get_accounts_delta_hash
|
||||||
// intended to be faster than calculate_accounts_hash
|
// intended to be faster than calculate_accounts_hash
|
||||||
pub fn calculate_accounts_hash_without_index(
|
pub fn calculate_accounts_hash_without_index(
|
||||||
storages: SnapshotStorages,
|
storages: &[SnapshotStorage],
|
||||||
simple_capitalization_enabled: bool,
|
simple_capitalization_enabled: bool,
|
||||||
) -> (Hash, u64) {
|
) -> (Hash, u64) {
|
||||||
let result = Self::scan_snapshot_stores(storages, simple_capitalization_enabled);
|
let result = Self::scan_snapshot_stores(storages, simple_capitalization_enabled);
|
||||||
@ -5133,7 +5133,7 @@ pub mod tests {
|
|||||||
solana_logger::setup();
|
solana_logger::setup();
|
||||||
|
|
||||||
let (storages, _size, _slot_expected) = sample_storage();
|
let (storages, _size, _slot_expected) = sample_storage();
|
||||||
let result = AccountsDB::calculate_accounts_hash_without_index(storages, true);
|
let result = AccountsDB::calculate_accounts_hash_without_index(&storages, true);
|
||||||
let expected_hash = Hash::from_str("GKot5hBsd81kMupNCXHaqbhv3huEbxAFMLnpcX2hniwn").unwrap();
|
let expected_hash = Hash::from_str("GKot5hBsd81kMupNCXHaqbhv3huEbxAFMLnpcX2hniwn").unwrap();
|
||||||
assert_eq!(result, (expected_hash, 0));
|
assert_eq!(result, (expected_hash, 0));
|
||||||
}
|
}
|
||||||
@ -5179,7 +5179,7 @@ pub mod tests {
|
|||||||
|
|
||||||
let calls = AtomicU64::new(0);
|
let calls = AtomicU64::new(0);
|
||||||
let result = AccountsDB::scan_account_storage_no_bank(
|
let result = AccountsDB::scan_account_storage_no_bank(
|
||||||
storages,
|
&storages,
|
||||||
|loaded_account: LoadedAccount,
|
|loaded_account: LoadedAccount,
|
||||||
_store_id: AppendVecId,
|
_store_id: AppendVecId,
|
||||||
accum: &mut Vec<u64>,
|
accum: &mut Vec<u64>,
|
||||||
|
@ -964,7 +964,7 @@ pub fn process_accounts_package_pre(accounts_package: AccountsPackagePre) -> Acc
|
|||||||
let hash = accounts_package.hash; // temporarily remaining here
|
let hash = accounts_package.hash; // temporarily remaining here
|
||||||
if let Some(expected_hash) = accounts_package.hash_for_testing {
|
if let Some(expected_hash) = accounts_package.hash_for_testing {
|
||||||
let (hash, lamports) = AccountsDB::calculate_accounts_hash_without_index(
|
let (hash, lamports) = AccountsDB::calculate_accounts_hash_without_index(
|
||||||
accounts_package.storages.clone(),
|
&accounts_package.storages,
|
||||||
accounts_package.simple_capitalization_testing,
|
accounts_package.simple_capitalization_testing,
|
||||||
);
|
);
|
||||||
time.stop();
|
time.stop();
|
||||||
|
Reference in New Issue
Block a user