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

View File

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

View File

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