Inline do_process_blockstore_from_root

This commit is contained in:
Michael Vines 2022-03-05 14:46:23 +01:00
parent 07d5ee062d
commit c2ce152be8
3 changed files with 31 additions and 81 deletions

View File

@ -529,7 +529,7 @@ mod tests {
super::*, super::*,
solana_gossip::contact_info::ContactInfo, solana_gossip::contact_info::ContactInfo,
solana_ledger::{ solana_ledger::{
blockstore_processor::{process_blockstore, ProcessOptions}, blockstore_processor::{test_process_blockstore, ProcessOptions},
create_new_tmp_ledger, create_new_tmp_ledger,
genesis_utils::{create_genesis_config, GenesisConfigInfo}, genesis_utils::{create_genesis_config, GenesisConfigInfo},
}, },
@ -550,18 +550,11 @@ mod tests {
full_leader_cache: true, full_leader_cache: true,
..ProcessOptions::default() ..ProcessOptions::default()
}; };
let (accounts_package_sender, _) = unbounded(); let (bank_forks, cached_leader_schedule, _) = test_process_blockstore(
let (bank_forks, cached_leader_schedule, _) = process_blockstore(
&genesis_config, &genesis_config,
&blockstore, &blockstore,
Vec::new(),
opts, opts,
None, );
None,
accounts_package_sender,
None,
)
.unwrap();
let leader_schedule_cache = Arc::new(cached_leader_schedule); let leader_schedule_cache = Arc::new(cached_leader_schedule);
let bank_forks = Arc::new(RwLock::new(bank_forks)); let bank_forks = Arc::new(RwLock::new(bank_forks));

View File

@ -108,16 +108,25 @@ pub fn load(
} }
info!("Processing ledger from genesis"); info!("Processing ledger from genesis");
to_loadresult(
blockstore_processor::process_blockstore( let bank_forks = blockstore_processor::process_blockstore_for_bank_0(
genesis_config, genesis_config,
blockstore, blockstore,
account_paths, account_paths,
process_options, &process_options,
cache_block_meta_sender,
accounts_update_notifier,
);
to_loadresult(
blockstore_processor::process_blockstore_from_root(
blockstore,
bank_forks,
&process_options,
transaction_status_sender,
cache_block_meta_sender, cache_block_meta_sender,
snapshot_config, snapshot_config,
accounts_package_sender, accounts_package_sender,
accounts_update_notifier, None,
), ),
None, None,
) )
@ -197,7 +206,7 @@ fn load_from_snapshot(
cache_block_meta_sender, cache_block_meta_sender,
Some(snapshot_config), Some(snapshot_config),
accounts_package_sender, accounts_package_sender,
full_snapshot_archive_info.slot(), Some(full_snapshot_archive_info.slot()),
), ),
Some(starting_snapshot_hashes), Some(starting_snapshot_hashes),
) )

View File

@ -4,7 +4,7 @@ use {
blockstore_meta::SlotMeta, leader_schedule_cache::LeaderScheduleCache, blockstore_meta::SlotMeta, leader_schedule_cache::LeaderScheduleCache,
}, },
chrono_humanize::{Accuracy, HumanTime, Tense}, chrono_humanize::{Accuracy, HumanTime, Tense},
crossbeam_channel::Sender, crossbeam_channel::{unbounded, Sender},
itertools::Itertools, itertools::Itertools,
log::*, log::*,
rand::{seq::SliceRandom, thread_rng}, rand::{seq::SliceRandom, thread_rng},
@ -566,37 +566,28 @@ pub struct ProcessOptions {
pub shrink_ratio: AccountShrinkThreshold, pub shrink_ratio: AccountShrinkThreshold,
} }
pub fn process_blockstore( pub fn test_process_blockstore(
genesis_config: &GenesisConfig, genesis_config: &GenesisConfig,
blockstore: &Blockstore, blockstore: &Blockstore,
account_paths: Vec<PathBuf>,
opts: ProcessOptions, opts: ProcessOptions,
cache_block_meta_sender: Option<&CacheBlockMetaSender>, ) -> BlockstoreProcessorInner {
snapshot_config: Option<&SnapshotConfig>, let (accounts_package_sender, _) = unbounded();
accounts_package_sender: AccountsPackageSender, let bank_forks =
accounts_update_notifier: Option<AccountsUpdateNotifier>, process_blockstore_for_bank_0(genesis_config, blockstore, Vec::new(), &opts, None, None);
) -> BlockstoreProcessorResult { process_blockstore_from_root(
let bank_forks = process_blockstore_for_bank_0(
genesis_config,
blockstore,
account_paths,
&opts,
cache_block_meta_sender,
accounts_update_notifier,
);
do_process_blockstore_from_root(
blockstore, blockstore,
bank_forks, bank_forks,
&opts, &opts,
None, None,
cache_block_meta_sender, None,
snapshot_config, None,
accounts_package_sender, accounts_package_sender,
None, None,
) )
.unwrap()
} }
fn process_blockstore_for_bank_0( pub(crate) fn process_blockstore_for_bank_0(
genesis_config: &GenesisConfig, genesis_config: &GenesisConfig,
blockstore: &Blockstore, blockstore: &Blockstore,
account_paths: Vec<PathBuf>, account_paths: Vec<PathBuf>,
@ -633,29 +624,6 @@ fn process_blockstore_for_bank_0(
/// Process blockstore from a known root bank /// Process blockstore from a known root bank
#[allow(clippy::too_many_arguments)] #[allow(clippy::too_many_arguments)]
pub(crate) fn process_blockstore_from_root( pub(crate) fn process_blockstore_from_root(
blockstore: &Blockstore,
bank_forks: BankForks,
opts: &ProcessOptions,
transaction_status_sender: Option<&TransactionStatusSender>,
cache_block_meta_sender: Option<&CacheBlockMetaSender>,
snapshot_config: Option<&SnapshotConfig>,
accounts_package_sender: AccountsPackageSender,
last_full_snapshot_slot: Slot,
) -> BlockstoreProcessorResult {
do_process_blockstore_from_root(
blockstore,
bank_forks,
opts,
transaction_status_sender,
cache_block_meta_sender,
snapshot_config,
accounts_package_sender,
Some(last_full_snapshot_slot),
)
}
#[allow(clippy::too_many_arguments)]
fn do_process_blockstore_from_root(
blockstore: &Blockstore, blockstore: &Blockstore,
mut bank_forks: BankForks, mut bank_forks: BankForks,
opts: &ProcessOptions, opts: &ProcessOptions,
@ -1592,7 +1560,6 @@ pub mod tests {
crate::genesis_utils::{ crate::genesis_utils::{
create_genesis_config, create_genesis_config_with_leader, GenesisConfigInfo, create_genesis_config, create_genesis_config_with_leader, GenesisConfigInfo,
}, },
crossbeam_channel::unbounded,
matches::assert_matches, matches::assert_matches,
rand::{thread_rng, Rng}, rand::{thread_rng, Rng},
solana_entry::entry::{create_ticks, next_entry, next_entry_mut}, solana_entry::entry::{create_ticks, next_entry, next_entry_mut},
@ -1619,25 +1586,6 @@ pub mod tests {
trees::tr, trees::tr,
}; };
fn test_process_blockstore(
genesis_config: &GenesisConfig,
blockstore: &Blockstore,
opts: ProcessOptions,
) -> BlockstoreProcessorInner {
let (accounts_package_sender, _) = unbounded();
process_blockstore(
genesis_config,
blockstore,
Vec::new(),
opts,
None,
None,
accounts_package_sender,
None,
)
.unwrap()
}
#[test] #[test]
fn test_process_blockstore_with_missing_hashes() { fn test_process_blockstore_with_missing_hashes() {
solana_logger::setup(); solana_logger::setup();
@ -3206,7 +3154,7 @@ pub mod tests {
// Test process_blockstore_from_root() from slot 1 onwards // Test process_blockstore_from_root() from slot 1 onwards
let (accounts_package_sender, _) = unbounded(); let (accounts_package_sender, _) = unbounded();
let (bank_forks, ..) = do_process_blockstore_from_root( let (bank_forks, ..) = process_blockstore_from_root(
&blockstore, &blockstore,
bank_forks, bank_forks,
&opts, &opts,
@ -3314,7 +3262,7 @@ pub mod tests {
let (accounts_package_sender, accounts_package_receiver) = unbounded(); let (accounts_package_sender, accounts_package_receiver) = unbounded();
do_process_blockstore_from_root( process_blockstore_from_root(
&blockstore, &blockstore,
bank_forks, bank_forks,
&opts, &opts,