diff --git a/core/src/validator.rs b/core/src/validator.rs index ad6ad96bb6..2964d34098 100644 --- a/core/src/validator.rs +++ b/core/src/validator.rs @@ -1056,7 +1056,7 @@ fn new_banks_from_ledger( None, &snapshot_config.snapshot_package_output_path, snapshot_config.archive_format, - &bank_forks.root_bank().get_thread_pool(), + Some(&bank_forks.root_bank().get_thread_pool()), ) .unwrap_or_else(|err| { error!("Unable to create snapshot: {}", err); diff --git a/ledger-tool/src/main.rs b/ledger-tool/src/main.rs index 8ffccfe952..f5a331ff91 100644 --- a/ledger-tool/src/main.rs +++ b/ledger-tool/src/main.rs @@ -1946,7 +1946,7 @@ fn main() { Some(snapshot_version), output_directory, ArchiveFormat::TarZstd, - &bank.get_thread_pool(), + None, ) .unwrap_or_else(|err| { eprintln!("Unable to create snapshot: {}", err); diff --git a/runtime/src/accounts_db.rs b/runtime/src/accounts_db.rs index 36a7f01d9f..1097d11b43 100644 --- a/runtime/src/accounts_db.rs +++ b/runtime/src/accounts_db.rs @@ -3785,7 +3785,7 @@ impl AccountsDB { Self::calculate_accounts_hash_without_index( &combined_maps, simple_capitalization_enabled, - &self.thread_pool_clean, + Some(&self.thread_pool_clean), ) } else { self.calculate_accounts_hash(slot, ancestors, false, simple_capitalization_enabled) @@ -3889,13 +3889,18 @@ impl AccountsDB { pub fn calculate_accounts_hash_without_index( storages: &[SnapshotStorage], simple_capitalization_enabled: bool, - thread_pool: &ThreadPool, + thread_pool: Option<&ThreadPool>, ) -> (Hash, u64) { - thread_pool.install(|| { + let scan_and_hash = || { let result = Self::scan_snapshot_stores(storages, simple_capitalization_enabled); Self::rest_of_hash_calculation(result) - }) + }; + if let Some(thread_pool) = thread_pool { + thread_pool.install(scan_and_hash) + } else { + scan_and_hash() + } } pub fn verify_bank_hash_and_lamports( @@ -5232,11 +5237,7 @@ pub mod tests { solana_logger::setup(); let (storages, _size, _slot_expected) = sample_storage(); - let result = AccountsDB::calculate_accounts_hash_without_index( - &storages, - true, - &make_min_priority_thread_pool(), - ); + let result = AccountsDB::calculate_accounts_hash_without_index(&storages, true, None); let expected_hash = Hash::from_str("GKot5hBsd81kMupNCXHaqbhv3huEbxAFMLnpcX2hniwn").unwrap(); assert_eq!(result, (expected_hash, 0)); } diff --git a/runtime/src/snapshot_utils.rs b/runtime/src/snapshot_utils.rs index db6fe93287..57dfc67e13 100644 --- a/runtime/src/snapshot_utils.rs +++ b/runtime/src/snapshot_utils.rs @@ -927,7 +927,7 @@ pub fn bank_to_snapshot_archive, Q: AsRef>( snapshot_version: Option, snapshot_package_output_path: Q, archive_format: ArchiveFormat, - thread_pool: &ThreadPool, + thread_pool: Option<&ThreadPool>, ) -> Result { let snapshot_version = snapshot_version.unwrap_or_default(); @@ -954,7 +954,7 @@ pub fn bank_to_snapshot_archive, Q: AsRef>( None, )?; - let package = process_accounts_package_pre(package, Some(&thread_pool)); + let package = process_accounts_package_pre(package, thread_pool); archive_snapshot_package(&package)?; Ok(package.tar_output_file) @@ -971,7 +971,7 @@ pub fn process_accounts_package_pre( let (hash, lamports) = AccountsDB::calculate_accounts_hash_without_index( &accounts_package.storages, accounts_package.simple_capitalization_testing, - &thread_pool.unwrap(), + thread_pool, ); assert_eq!(accounts_package.expected_capitalization, lamports);