From 27aaf9df85633b13c32d44d139528d8948141a53 Mon Sep 17 00:00:00 2001 From: behzad nouri Date: Fri, 4 Feb 2022 19:01:59 +0000 Subject: [PATCH] removes VoteTracker::new in favor of VoteTracker::default (#22941) VoteTracker::new does not need a bank and is so redundant: https://github.com/solana-labs/solana/blob/5a230f418/core/src/cluster_info_vote_listener.rs#L103-L107 --- core/src/cluster_info_vote_listener.rs | 23 ++++++----------------- core/src/replay_stage.rs | 6 +++--- core/src/tvu.rs | 2 +- core/src/validator.rs | 6 +----- 4 files changed, 11 insertions(+), 26 deletions(-) diff --git a/core/src/cluster_info_vote_listener.rs b/core/src/cluster_info_vote_listener.rs index 13795908d6..0c2d06efa6 100644 --- a/core/src/cluster_info_vote_listener.rs +++ b/core/src/cluster_info_vote_listener.rs @@ -100,12 +100,6 @@ pub struct VoteTracker { } impl VoteTracker { - pub(crate) fn new(root_bank: &Bank) -> Self { - let vote_tracker = VoteTracker::default(); - vote_tracker.progress_with_new_root_bank(root_bank); - vote_tracker - } - fn get_or_insert_slot_tracker(&self, slot: Slot) -> Arc> { if let Some(slot_vote_tracker) = self.slot_vote_trackers.read().unwrap().get(&slot) { return slot_vote_tracker.clone(); @@ -540,17 +534,14 @@ impl ClusterInfoVoteListener { let mut sel = Select::new(); sel.recv(gossip_vote_txs_receiver); sel.recv(replay_votes_receiver); - let mut remaining_wait_time = 200; - loop { - if remaining_wait_time == 0 { - break; - } + let mut remaining_wait_time = Duration::from_millis(200); + while remaining_wait_time > Duration::ZERO { let start = Instant::now(); // Wait for one of the receivers to be ready. `ready_timeout` // will return if channels either have something, or are // disconnected. `ready_timeout` can wake up spuriously, // hence the loop - let _ = sel.ready_timeout(Duration::from_millis(remaining_wait_time))?; + let _ = sel.ready_timeout(remaining_wait_time)?; // Should not early return from this point onwards until `process_votes()` // returns below to avoid missing any potential `optimistic_confirmed_slots` @@ -568,10 +559,8 @@ impl ClusterInfoVoteListener { bank_notification_sender, cluster_confirmed_slot_sender, )); - } else { - remaining_wait_time = remaining_wait_time - .saturating_sub(std::cmp::max(start.elapsed().as_millis() as u64, 1)); } + remaining_wait_time = remaining_wait_time.saturating_sub(start.elapsed()); } Ok(vec![]) } @@ -1374,7 +1363,7 @@ mod tests { let exit = Arc::new(AtomicBool::new(false)); let bank_forks = Arc::new(RwLock::new(BankForks::new(bank))); let bank = bank_forks.read().unwrap().get(0).unwrap().clone(); - let vote_tracker = VoteTracker::new(&bank); + let vote_tracker = VoteTracker::default(); let optimistically_confirmed_bank = OptimisticallyConfirmedBank::locked_from_bank_forks_root(&bank_forks); let max_complete_transaction_status_slot = Arc::new(AtomicU64::default()); @@ -1481,7 +1470,7 @@ mod tests { vec![100; validator_voting_keypairs.len()], ); let bank = Bank::new_for_tests(&genesis_config); - let vote_tracker = VoteTracker::new(&bank); + let vote_tracker = VoteTracker::default(); let exit = Arc::new(AtomicBool::new(false)); let bank_forks = Arc::new(RwLock::new(BankForks::new(bank))); let bank = bank_forks.read().unwrap().get(0).unwrap().clone(); diff --git a/core/src/replay_stage.rs b/core/src/replay_stage.rs index 9169def8cc..b88c3f0a0f 100644 --- a/core/src/replay_stage.rs +++ b/core/src/replay_stage.rs @@ -4478,7 +4478,7 @@ pub mod tests { // runs in `update_propagation_status` assert!(!progress_map.get_leader_propagation_slot_must_exist(10).0); - let vote_tracker = VoteTracker::new(&bank_forks.root_bank()); + let vote_tracker = VoteTracker::default(); vote_tracker.insert_vote(10, vote_pubkey); ReplayStage::update_propagation_status( &mut progress_map, @@ -4563,7 +4563,7 @@ pub mod tests { ); } - let vote_tracker = VoteTracker::new(&bank_forks.root_bank()); + let vote_tracker = VoteTracker::default(); for vote_pubkey in &vote_pubkeys { // Insert a vote for the last bank for each voter vote_tracker.insert_vote(10, *vote_pubkey); @@ -4650,7 +4650,7 @@ pub mod tests { progress_map.insert(i, fork_progress); } - let vote_tracker = VoteTracker::new(&bank_forks.root_bank()); + let vote_tracker = VoteTracker::default(); // Insert a new vote vote_tracker.insert_vote(10, vote_pubkeys[2]); diff --git a/core/src/tvu.rs b/core/src/tvu.rs index 119ccd6e6e..68293152dc 100644 --- a/core/src/tvu.rs +++ b/core/src/tvu.rs @@ -504,7 +504,7 @@ pub mod tests { None, None, None, - Arc::new(VoteTracker::new(&bank)), + Arc::::default(), retransmit_slots_sender, gossip_verified_vote_hash_receiver, verified_vote_receiver, diff --git a/core/src/validator.rs b/core/src/validator.rs index df07030905..c1bcd4a5d7 100644 --- a/core/src/validator.rs +++ b/core/src/validator.rs @@ -96,7 +96,6 @@ use { std::{ collections::{HashMap, HashSet}, net::SocketAddr, - ops::Deref, path::{Path, PathBuf}, sync::{ atomic::{AtomicBool, AtomicU64, Ordering}, @@ -805,10 +804,7 @@ impl Validator { "New shred signal for the TVU should be the same as the clear bank signal." ); - let vote_tracker = Arc::new(VoteTracker::new( - bank_forks.read().unwrap().root_bank().deref(), - )); - + let vote_tracker = Arc::::default(); let mut cost_model = CostModel::default(); cost_model.initialize_cost_table(&blockstore.read_program_costs().unwrap()); let cost_model = Arc::new(RwLock::new(cost_model));