diff --git a/banking-bench/src/main.rs b/banking-bench/src/main.rs index 3f14cef631..a2de272157 100644 --- a/banking-bench/src/main.rs +++ b/banking-bench/src/main.rs @@ -538,7 +538,7 @@ fn main() { ); assert!(poh_recorder.read().unwrap().bank().is_none()); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); assert!(poh_recorder.read().unwrap().bank().is_some()); debug!( "new_bank_time: {}us insert_time: {}us poh_time: {}us", diff --git a/core/src/banking_stage.rs b/core/src/banking_stage.rs index 681d057de7..0aa35d3ae9 100644 --- a/core/src/banking_stage.rs +++ b/core/src/banking_stage.rs @@ -1030,7 +1030,7 @@ mod tests { let poh_simulator = simulate_poh(record_receiver, &poh_recorder); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let pubkey = solana_sdk::pubkey::new_rand(); let keypair2 = Keypair::new(); let pubkey2 = solana_sdk::pubkey::new_rand(); diff --git a/core/src/banking_stage/consumer.rs b/core/src/banking_stage/consumer.rs index 05a0a7382d..3ab96e79ff 100644 --- a/core/src/banking_stage/consumer.rs +++ b/core/src/banking_stage/consumer.rs @@ -748,7 +748,7 @@ mod tests { let recorder = poh_recorder.new_recorder(); let poh_recorder = Arc::new(RwLock::new(poh_recorder)); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let poh_simulator = simulate_poh(record_receiver, &poh_recorder); @@ -907,7 +907,7 @@ mod tests { let poh_simulator = simulate_poh(record_receiver, &poh_recorder); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let (replay_vote_sender, _replay_vote_receiver) = unbounded(); let committer = Committer::new( None, @@ -1034,7 +1034,7 @@ mod tests { let poh_simulator = simulate_poh(record_receiver, &poh_recorder); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let (replay_vote_sender, _replay_vote_receiver) = unbounded(); let committer = Committer::new( None, @@ -1120,7 +1120,7 @@ mod tests { let poh_simulator = simulate_poh(record_receiver, &poh_recorder); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let (replay_vote_sender, _replay_vote_receiver) = unbounded(); let committer = Committer::new( None, @@ -1249,7 +1249,7 @@ mod tests { let recorder = poh_recorder.new_recorder(); let poh_recorder = Arc::new(RwLock::new(poh_recorder)); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let poh_simulator = simulate_poh(record_receiver, &poh_recorder); @@ -1549,7 +1549,7 @@ mod tests { let poh_simulator = simulate_poh(record_receiver, &poh_recorder); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let shreds = entries_to_test_shreds( &entries, @@ -1687,7 +1687,7 @@ mod tests { let poh_simulator = simulate_poh(record_receiver, &poh_recorder); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let shreds = entries_to_test_shreds( &entries, @@ -1786,7 +1786,7 @@ mod tests { assert_eq!(buffered_packet_batches.len(), num_conflicting_transactions); // When the working bank in poh_recorder is Some, all packets should be processed. // Multi-Iterator will process them 1-by-1 if all txs are conflicting. - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank, false); let bank_start = poh_recorder.read().unwrap().bank_start().unwrap(); let banking_stage_stats = BankingStageStats::default(); consumer.consume_buffered_packets( @@ -1864,7 +1864,7 @@ mod tests { assert_eq!(buffered_packet_batches.len(), num_conflicting_transactions); // When the working bank in poh_recorder is Some, all packets should be processed. // Multi-Iterator will process them 1-by-1 if all txs are conflicting. - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank, false); let bank_start = poh_recorder.read().unwrap().bank_start().unwrap(); consumer.consume_buffered_packets( &bank_start, @@ -1917,7 +1917,7 @@ mod tests { // When the working bank in poh_recorder is Some, all packets should be processed // except except for retryable errors. Manually take the lock of a transaction to // simulate another thread processing a transaction with that lock. - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank.clone(), false); let bank_start = poh_recorder.read().unwrap().bank_start().unwrap(); let lock_account = transactions[0].message.account_keys[1]; diff --git a/core/src/replay_stage.rs b/core/src/replay_stage.rs index a2c9bca867..ab7decc4b0 100644 --- a/core/src/replay_stage.rs +++ b/core/src/replay_stage.rs @@ -1948,7 +1948,7 @@ impl ReplayStage { poh_recorder .write() .unwrap() - .set_bank(&tpu_bank, track_transaction_indexes); + .set_bank(tpu_bank, track_transaction_indexes); } else { error!("{} No next leader found", my_pubkey); } diff --git a/poh/src/poh_recorder.rs b/poh/src/poh_recorder.rs index 5e02b87f13..b1d5b7008a 100644 --- a/poh/src/poh_recorder.rs +++ b/poh/src/poh_recorder.rs @@ -573,14 +573,14 @@ impl PohRecorder { self.leader_last_tick_height = leader_last_tick_height; } - pub fn set_bank(&mut self, bank: &Arc, track_transaction_indexes: bool) { + pub fn set_bank(&mut self, bank: Arc, track_transaction_indexes: bool) { assert!(self.working_bank.is_none()); - self.leader_bank_notifier.set_in_progress(bank); + self.leader_bank_notifier.set_in_progress(&bank); let working_bank = WorkingBank { - bank: bank.clone(), - start: Arc::new(Instant::now()), min_tick_height: bank.tick_height(), max_tick_height: bank.max_tick_height(), + bank, + start: Arc::new(Instant::now()), transaction_index: track_transaction_indexes.then_some(0), }; trace!("new working bank"); @@ -595,7 +595,7 @@ impl PohRecorder { "resetting poh due to hashes per tick change detected at {}", working_bank.bank.slot() ); - self.reset_poh(working_bank.clone().bank, false); + self.reset_poh(working_bank.bank.clone(), false); } } self.working_bank = Some(working_bank); @@ -1057,7 +1057,7 @@ pub fn create_test_recorder( &poh_config, exit.clone(), ); - poh_recorder.set_bank(bank, false); + poh_recorder.set_bank(bank.clone(), false); let poh_recorder = Arc::new(RwLock::new(poh_recorder)); let poh_service = PohService::new( @@ -1195,7 +1195,7 @@ mod tests { Arc::new(AtomicBool::default()), ); - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank, false); assert!(poh_recorder.working_bank.is_some()); poh_recorder.clear_bank(); assert!(poh_recorder.working_bank.is_none()); @@ -1229,7 +1229,7 @@ mod tests { let bank1 = Arc::new(Bank::new_from_parent(&bank0, &Pubkey::default(), 1)); // Set a working bank - poh_recorder.set_bank(&bank1, false); + poh_recorder.set_bank(bank1.clone(), false); // Tick until poh_recorder.tick_height == working bank's min_tick_height let num_new_ticks = bank1.tick_height() - poh_recorder.tick_height(); @@ -1298,7 +1298,7 @@ mod tests { ); assert_eq!(poh_recorder.tick_height, bank.max_tick_height() + 1); - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank.clone(), false); poh_recorder.tick(); assert_eq!(poh_recorder.tick_height, bank.max_tick_height() + 2); @@ -1339,7 +1339,7 @@ mod tests { bank0.fill_bank_with_ticks_for_tests(); let bank1 = Arc::new(Bank::new_from_parent(&bank0, &Pubkey::default(), 1)); - poh_recorder.set_bank(&bank1, false); + poh_recorder.set_bank(bank1.clone(), false); // Let poh_recorder tick up to bank1.tick_height() - 1 for _ in 0..bank1.tick_height() - 1 { poh_recorder.tick() @@ -1380,7 +1380,7 @@ mod tests { Arc::new(AtomicBool::default()), ); - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank.clone(), false); let tx = test_tx(); let h1 = hash(b"hello world!"); @@ -1424,7 +1424,7 @@ mod tests { bank0.fill_bank_with_ticks_for_tests(); let bank1 = Arc::new(Bank::new_from_parent(&bank0, &Pubkey::default(), 1)); - poh_recorder.set_bank(&bank1, false); + poh_recorder.set_bank(bank1.clone(), false); // Record up to exactly min tick height let min_tick_height = poh_recorder.working_bank.as_ref().unwrap().min_tick_height; @@ -1478,7 +1478,7 @@ mod tests { Arc::new(AtomicBool::default()), ); - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank.clone(), false); let num_ticks_to_max = bank.max_tick_height() - poh_recorder.tick_height; for _ in 0..num_ticks_to_max { poh_recorder.tick(); @@ -1518,7 +1518,7 @@ mod tests { Arc::new(AtomicBool::default()), ); - poh_recorder.set_bank(&bank, true); + poh_recorder.set_bank(bank.clone(), true); poh_recorder.tick(); assert_eq!( poh_recorder @@ -1592,7 +1592,7 @@ mod tests { bank0.fill_bank_with_ticks_for_tests(); let bank1 = Arc::new(Bank::new_from_parent(&bank0, &Pubkey::default(), 1)); - poh_recorder.set_bank(&bank1, false); + poh_recorder.set_bank(bank1, false); // Check we can make two ticks without hitting min_tick_height let remaining_ticks_to_min = @@ -1740,7 +1740,7 @@ mod tests { Arc::new(AtomicBool::default()), ); - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank.clone(), false); assert_eq!(bank.slot(), 0); poh_recorder.reset(bank, Some((4, 4))); assert!(poh_recorder.working_bank.is_none()); @@ -1772,7 +1772,7 @@ mod tests { None, Arc::new(AtomicBool::default()), ); - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank, false); poh_recorder.clear_bank(); assert!(receiver.try_recv().is_ok()); } @@ -1807,7 +1807,7 @@ mod tests { Arc::new(AtomicBool::default()), ); - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank.clone(), false); // Simulate ticking much further than working_bank.max_tick_height let max_tick_height = poh_recorder.working_bank.as_ref().unwrap().max_tick_height; @@ -2102,7 +2102,7 @@ mod tests { // Move the bank up a slot (so that max_tick_height > slot 0's tick_height) let bank = Arc::new(Bank::new_from_parent(&bank, &Pubkey::default(), 1)); // If we set the working bank, the node should be leader within next 2 slots - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank.clone(), false); assert!(poh_recorder.would_be_leader(2 * bank.ticks_per_slot())); } } @@ -2136,7 +2136,7 @@ mod tests { for _ in 0..(bank.ticks_per_slot() * 3) { poh_recorder.tick(); } - poh_recorder.set_bank(&bank, false); + poh_recorder.set_bank(bank.clone(), false); assert!(!bank.is_hash_valid_for_age(&genesis_hash, 0)); assert!(bank.is_hash_valid_for_age(&genesis_hash, 1)); } diff --git a/poh/src/poh_service.rs b/poh/src/poh_service.rs index dd0db2eb34..4fcc918e5b 100644 --- a/poh/src/poh_service.rs +++ b/poh/src/poh_service.rs @@ -499,7 +499,7 @@ mod tests { hashes_per_batch, record_receiver, ); - poh_recorder.write().unwrap().set_bank(&bank, false); + poh_recorder.write().unwrap().set_bank(bank, false); // get some events let mut hashes = 0;