set_bank takes owned Arc<Bank> (#31717)

This commit is contained in:
Andrew Fitzgerald 2023-05-23 09:41:27 -07:00 committed by GitHub
parent 1e8e024ec5
commit 02ac8a46d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 34 additions and 34 deletions

View File

@ -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",

View File

@ -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();

View File

@ -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];

View File

@ -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);
}

View File

@ -573,14 +573,14 @@ impl PohRecorder {
self.leader_last_tick_height = leader_last_tick_height;
}
pub fn set_bank(&mut self, bank: &Arc<Bank>, track_transaction_indexes: bool) {
pub fn set_bank(&mut self, bank: Arc<Bank>, 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));
}

View File

@ -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;