From da38a6794d3e8e4164acf4b319b9e83493192aee Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Wed, 5 Mar 2025 22:56:33 -0600 Subject: [PATCH 1/2] Fix flaky banking stage tests (#5160) (cherry picked from commit 433f4ffe1ba28f144f3c213b4580d3bdaf1149a0) # Conflicts: # core/src/banking_stage.rs --- core/src/banking_stage.rs | 51 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index 5cf2e5f04e2e2d..690122fbc40633 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -1073,6 +1073,7 @@ mod tests { gossip_vote_receiver, } = banking_tracer.create_channels(false); let ledger_path = get_tmp_ledger_path_auto_delete!(); +<<<<<<< HEAD { let blockstore = Arc::new( Blockstore::open(ledger_path.path()) @@ -1089,6 +1090,17 @@ mod tests { let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); let cluster_info = Arc::new(cluster_info); let (replay_vote_sender, _replay_vote_receiver) = unbounded(); +======= + let blockstore = Arc::new( + Blockstore::open(ledger_path.path()) + .expect("Expected to be able to open database ledger"), + ); + let (exit, poh_recorder, poh_service, entry_receiver) = + create_test_recorder(bank.clone(), blockstore, None, None); + let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); + let cluster_info = Arc::new(cluster_info); + let (replay_vote_sender, _replay_vote_receiver) = unbounded(); +>>>>>>> 433f4ffe1 (Fix flaky banking stage tests (#5160)) let banking_stage = BankingStage::new( block_production_method, @@ -1249,6 +1261,7 @@ mod tests { { let (replay_vote_sender, _replay_vote_receiver) = unbounded(); +<<<<<<< HEAD let entry_receiver = { // start a banking_stage to eat verified receiver let (bank, bank_forks) = Bank::new_no_wallclock_throttle_for_tests(&genesis_config); @@ -1294,6 +1307,30 @@ mod tests { drop(non_vote_sender); drop(tpu_vote_sender); drop(gossip_vote_sender); +======= + let (replay_vote_sender, _replay_vote_receiver) = unbounded(); + let entry_receiver = { + // start a banking_stage to eat verified receiver + let (bank, bank_forks) = Bank::new_no_wallclock_throttle_for_tests(&genesis_config); + let (exit, poh_recorder, poh_service, entry_receiver) = + create_test_recorder(bank.clone(), blockstore, None, None); + let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); + let cluster_info = Arc::new(cluster_info); + let _banking_stage = BankingStage::new( + BlockProductionMethod::CentralScheduler, + transaction_struct, + &cluster_info, + &poh_recorder, + non_vote_receiver, + tpu_vote_receiver, + gossip_vote_receiver, + None, + replay_vote_sender, + None, + bank_forks, + &Arc::new(PrioritizationFeeCache::new(0u64)), + ); +>>>>>>> 433f4ffe1 (Fix flaky banking stage tests (#5160)) // consume the entire entry_receiver, feed it into a new bank // check that the balance is what we expect. @@ -1401,7 +1438,7 @@ mod tests { ); // For these tests there's only 1 slot, don't want to run out of ticks - config_info.genesis_config.ticks_per_slot *= 8; + config_info.genesis_config.ticks_per_slot *= 1024; config_info } @@ -1447,6 +1484,7 @@ mod tests { gossip_vote_receiver, } = banking_tracer.create_channels(false); let ledger_path = get_tmp_ledger_path_auto_delete!(); +<<<<<<< HEAD { let blockstore = Arc::new( Blockstore::open(ledger_path.path()) @@ -1463,6 +1501,17 @@ mod tests { let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); let cluster_info = Arc::new(cluster_info); let (replay_vote_sender, _replay_vote_receiver) = unbounded(); +======= + let blockstore = Arc::new( + Blockstore::open(ledger_path.path()) + .expect("Expected to be able to open database ledger"), + ); + let (exit, poh_recorder, poh_service, _entry_receiver) = + create_test_recorder(bank.clone(), blockstore, None, None); + let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); + let cluster_info = Arc::new(cluster_info); + let (replay_vote_sender, _replay_vote_receiver) = unbounded(); +>>>>>>> 433f4ffe1 (Fix flaky banking stage tests (#5160)) let banking_stage = BankingStage::new( BlockProductionMethod::CentralScheduler, From 6f5e7362888f962ed34d79e2c3d179e9fae47f18 Mon Sep 17 00:00:00 2001 From: Justin Starry Date: Thu, 6 Mar 2025 14:20:19 +0000 Subject: [PATCH 2/2] fix conflicts --- core/src/banking_stage.rs | 73 ++------------------------------------- 1 file changed, 3 insertions(+), 70 deletions(-) diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index 690122fbc40633..d03de93b1419aa 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -1073,34 +1073,16 @@ mod tests { gossip_vote_receiver, } = banking_tracer.create_channels(false); let ledger_path = get_tmp_ledger_path_auto_delete!(); -<<<<<<< HEAD { let blockstore = Arc::new( Blockstore::open(ledger_path.path()) .expect("Expected to be able to open database ledger"), ); - let poh_config = PohConfig { - // limit tick count to avoid clearing working_bank at PohRecord then - // PohRecorderError(MaxHeightReached) at BankingStage - target_tick_count: Some(bank.max_tick_height() - 1), - ..PohConfig::default() - }; let (exit, poh_recorder, poh_service, entry_receiver) = - create_test_recorder(bank.clone(), blockstore, Some(poh_config), None); + create_test_recorder(bank.clone(), blockstore, None, None); let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); let cluster_info = Arc::new(cluster_info); let (replay_vote_sender, _replay_vote_receiver) = unbounded(); -======= - let blockstore = Arc::new( - Blockstore::open(ledger_path.path()) - .expect("Expected to be able to open database ledger"), - ); - let (exit, poh_recorder, poh_service, entry_receiver) = - create_test_recorder(bank.clone(), blockstore, None, None); - let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); - let cluster_info = Arc::new(cluster_info); - let (replay_vote_sender, _replay_vote_receiver) = unbounded(); ->>>>>>> 433f4ffe1 (Fix flaky banking stage tests (#5160)) let banking_stage = BankingStage::new( block_production_method, @@ -1261,7 +1243,6 @@ mod tests { { let (replay_vote_sender, _replay_vote_receiver) = unbounded(); -<<<<<<< HEAD let entry_receiver = { // start a banking_stage to eat verified receiver let (bank, bank_forks) = Bank::new_no_wallclock_throttle_for_tests(&genesis_config); @@ -1269,14 +1250,8 @@ mod tests { Blockstore::open(ledger_path.path()) .expect("Expected to be able to open database ledger"), ); - let poh_config = PohConfig { - // limit tick count to avoid clearing working_bank at - // PohRecord then PohRecorderError(MaxHeightReached) at BankingStage - target_tick_count: Some(bank.max_tick_height() - 1), - ..PohConfig::default() - }; let (exit, poh_recorder, poh_service, entry_receiver) = - create_test_recorder(bank.clone(), blockstore, Some(poh_config), None); + create_test_recorder(bank.clone(), blockstore, None, None); let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); let cluster_info = Arc::new(cluster_info); let _banking_stage = BankingStage::new( @@ -1307,30 +1282,6 @@ mod tests { drop(non_vote_sender); drop(tpu_vote_sender); drop(gossip_vote_sender); -======= - let (replay_vote_sender, _replay_vote_receiver) = unbounded(); - let entry_receiver = { - // start a banking_stage to eat verified receiver - let (bank, bank_forks) = Bank::new_no_wallclock_throttle_for_tests(&genesis_config); - let (exit, poh_recorder, poh_service, entry_receiver) = - create_test_recorder(bank.clone(), blockstore, None, None); - let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); - let cluster_info = Arc::new(cluster_info); - let _banking_stage = BankingStage::new( - BlockProductionMethod::CentralScheduler, - transaction_struct, - &cluster_info, - &poh_recorder, - non_vote_receiver, - tpu_vote_receiver, - gossip_vote_receiver, - None, - replay_vote_sender, - None, - bank_forks, - &Arc::new(PrioritizationFeeCache::new(0u64)), - ); ->>>>>>> 433f4ffe1 (Fix flaky banking stage tests (#5160)) // consume the entire entry_receiver, feed it into a new bank // check that the balance is what we expect. @@ -1484,34 +1435,16 @@ mod tests { gossip_vote_receiver, } = banking_tracer.create_channels(false); let ledger_path = get_tmp_ledger_path_auto_delete!(); -<<<<<<< HEAD { let blockstore = Arc::new( Blockstore::open(ledger_path.path()) .expect("Expected to be able to open database ledger"), ); - let poh_config = PohConfig { - // limit tick count to avoid clearing working_bank at PohRecord then - // PohRecorderError(MaxHeightReached) at BankingStage - target_tick_count: Some(bank.max_tick_height() - 1), - ..PohConfig::default() - }; let (exit, poh_recorder, poh_service, _entry_receiver) = - create_test_recorder(bank.clone(), blockstore, Some(poh_config), None); + create_test_recorder(bank.clone(), blockstore, None, None); let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); let cluster_info = Arc::new(cluster_info); let (replay_vote_sender, _replay_vote_receiver) = unbounded(); -======= - let blockstore = Arc::new( - Blockstore::open(ledger_path.path()) - .expect("Expected to be able to open database ledger"), - ); - let (exit, poh_recorder, poh_service, _entry_receiver) = - create_test_recorder(bank.clone(), blockstore, None, None); - let (_, cluster_info) = new_test_cluster_info(/*keypair:*/ None); - let cluster_info = Arc::new(cluster_info); - let (replay_vote_sender, _replay_vote_receiver) = unbounded(); ->>>>>>> 433f4ffe1 (Fix flaky banking stage tests (#5160)) let banking_stage = BankingStage::new( BlockProductionMethod::CentralScheduler,