diff --git a/banking-bench/src/main.rs b/banking-bench/src/main.rs index 3d2f57f4bc..cbb34ba90f 100644 --- a/banking-bench/src/main.rs +++ b/banking-bench/src/main.rs @@ -11,6 +11,7 @@ use { blockstore::Blockstore, genesis_utils::{create_genesis_config, GenesisConfigInfo}, get_tmp_ledger_path, + leader_schedule_cache::LeaderScheduleCache, }, solana_measure::measure::Measure, solana_perf::packet::to_packet_batches, @@ -218,8 +219,13 @@ fn main() { let blockstore = Arc::new( Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"), ); - let (exit, poh_recorder, poh_service, signal_receiver) = - create_test_recorder(&bank, &blockstore, None); + let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank)); + let (exit, poh_recorder, poh_service, signal_receiver) = create_test_recorder( + &bank, + &blockstore, + None, + Some(leader_schedule_cache.clone()), + ); let cluster_info = ClusterInfo::new( Node::new_localhost().info, Arc::new(Keypair::new()), @@ -332,6 +338,7 @@ fn main() { poh_recorder.lock().unwrap().set_bank(&bank); assert!(poh_recorder.lock().unwrap().bank().is_some()); if bank.slot() > 32 { + leader_schedule_cache.set_root(&bank); bank_forks.set_root(root, &AbsRequestSender::default(), None); root += 1; } diff --git a/core/benches/banking_stage.rs b/core/benches/banking_stage.rs index 2199fb51b3..72dee59407 100644 --- a/core/benches/banking_stage.rs +++ b/core/benches/banking_stage.rs @@ -70,7 +70,7 @@ fn bench_consume_buffered(bencher: &mut Bencher) { Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"), ); let (exit, poh_recorder, poh_service, _signal_receiver) = - create_test_recorder(&bank, &blockstore, None); + create_test_recorder(&bank, &blockstore, None, None); let recorder = poh_recorder.lock().unwrap().recorder(); @@ -213,7 +213,7 @@ fn bench_banking(bencher: &mut Bencher, tx_type: TransactionType) { Blockstore::open(&ledger_path).expect("Expected to be able to open database ledger"), ); let (exit, poh_recorder, poh_service, signal_receiver) = - create_test_recorder(&bank, &blockstore, None); + create_test_recorder(&bank, &blockstore, None, None); let cluster_info = ClusterInfo::new( Node::new_localhost().info, Arc::new(Keypair::new()), diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index 58f3d8e29c..b55febb58c 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -1802,7 +1802,7 @@ mod tests { .expect("Expected to be able to open database ledger"), ); let (exit, poh_recorder, poh_service, _entry_receiever) = - create_test_recorder(&bank, &blockstore, None); + create_test_recorder(&bank, &blockstore, None, None); let cluster_info = new_test_cluster_info(Node::new_localhost().info); let cluster_info = Arc::new(cluster_info); let (gossip_vote_sender, _gossip_vote_receiver) = unbounded(); @@ -1850,7 +1850,7 @@ mod tests { ..PohConfig::default() }; let (exit, poh_recorder, poh_service, entry_receiver) = - create_test_recorder(&bank, &blockstore, Some(poh_config)); + create_test_recorder(&bank, &blockstore, Some(poh_config), None); let cluster_info = new_test_cluster_info(Node::new_localhost().info); let cluster_info = Arc::new(cluster_info); let (verified_gossip_vote_sender, verified_gossip_vote_receiver) = unbounded(); @@ -1926,7 +1926,7 @@ mod tests { ..PohConfig::default() }; let (exit, poh_recorder, poh_service, entry_receiver) = - create_test_recorder(&bank, &blockstore, Some(poh_config)); + create_test_recorder(&bank, &blockstore, Some(poh_config), None); let cluster_info = new_test_cluster_info(Node::new_localhost().info); let cluster_info = Arc::new(cluster_info); let (gossip_vote_sender, _gossip_vote_receiver) = unbounded(); @@ -2078,7 +2078,7 @@ mod tests { ..PohConfig::default() }; let (exit, poh_recorder, poh_service, entry_receiver) = - create_test_recorder(&bank, &blockstore, Some(poh_config)); + create_test_recorder(&bank, &blockstore, Some(poh_config), None); let cluster_info = new_test_cluster_info(Node::new_localhost().info); let cluster_info = Arc::new(cluster_info); let _banking_stage = BankingStage::new_num_threads( @@ -3272,7 +3272,7 @@ mod tests { }; let (exit, poh_recorder, poh_service, _entry_receiver) = - create_test_recorder(&bank, &blockstore, Some(poh_config)); + create_test_recorder(&bank, &blockstore, Some(poh_config), None); let local_node = Node::new_localhost_with_pubkey(validator_pubkey); let cluster_info = new_test_cluster_info(local_node.info); @@ -3355,7 +3355,7 @@ mod tests { }; let (exit, poh_recorder, poh_service, _entry_receiver) = - create_test_recorder(&bank, &blockstore, Some(poh_config)); + create_test_recorder(&bank, &blockstore, Some(poh_config), None); let local_node = Node::new_localhost_with_pubkey(validator_pubkey); let cluster_info = new_test_cluster_info(local_node.info); diff --git a/core/src/tvu.rs b/core/src/tvu.rs index 3921f07b25..e161231e01 100644 --- a/core/src/tvu.rs +++ b/core/src/tvu.rs @@ -459,7 +459,7 @@ pub mod tests { let blockstore = Arc::new(blockstore); let bank = bank_forks.working_bank(); let (exit, poh_recorder, poh_service, _entry_receiver) = - create_test_recorder(&bank, &blockstore, None); + create_test_recorder(&bank, &blockstore, None, None); let vote_keypair = Keypair::new(); let leader_schedule_cache = Arc::new(LeaderScheduleCache::new_from_bank(&bank)); let block_commitment_cache = Arc::new(RwLock::new(BlockCommitmentCache::default())); diff --git a/poh/src/poh_recorder.rs b/poh/src/poh_recorder.rs index 286d0e34ee..f40e9604d4 100644 --- a/poh/src/poh_recorder.rs +++ b/poh/src/poh_recorder.rs @@ -825,12 +825,17 @@ pub fn create_test_recorder( bank: &Arc, blockstore: &Arc, poh_config: Option, + leader_schedule_cache: Option>, ) -> ( Arc, Arc>, PohService, Receiver, ) { + let leader_schedule_cache = match leader_schedule_cache { + Some(provided_cache) => provided_cache, + None => Arc::new(LeaderScheduleCache::new_from_bank(bank)), + }; let exit = Arc::new(AtomicBool::new(false)); let poh_config = Arc::new(poh_config.unwrap_or_default()); let (mut poh_recorder, entry_receiver, record_receiver) = PohRecorder::new( @@ -841,7 +846,7 @@ pub fn create_test_recorder( bank.ticks_per_slot(), &Pubkey::default(), blockstore, - &Arc::new(LeaderScheduleCache::new_from_bank(bank)), + &leader_schedule_cache, &poh_config, exit.clone(), );