removes VoteTracker::new in favor of VoteTracker::default (#22941) (#22946)

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
(cherry picked from commit 27aaf9df85)

Co-authored-by: behzad nouri <behzadnouri@gmail.com>
This commit is contained in:
mergify[bot]
2022-02-04 20:59:01 +00:00
committed by GitHub
parent c43cef79b5
commit 9ea025315e
4 changed files with 11 additions and 26 deletions

View File

@ -103,12 +103,6 @@ pub struct VoteTracker {
} }
impl 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<RwLock<SlotVoteTracker>> { fn get_or_insert_slot_tracker(&self, slot: Slot) -> Arc<RwLock<SlotVoteTracker>> {
if let Some(slot_vote_tracker) = self.slot_vote_trackers.read().unwrap().get(&slot) { if let Some(slot_vote_tracker) = self.slot_vote_trackers.read().unwrap().get(&slot) {
return slot_vote_tracker.clone(); return slot_vote_tracker.clone();
@ -539,17 +533,14 @@ impl ClusterInfoVoteListener {
let mut sel = Select::new(); let mut sel = Select::new();
sel.recv(gossip_vote_txs_receiver); sel.recv(gossip_vote_txs_receiver);
sel.recv(replay_votes_receiver); sel.recv(replay_votes_receiver);
let mut remaining_wait_time = 200; let mut remaining_wait_time = Duration::from_millis(200);
loop { while remaining_wait_time > Duration::ZERO {
if remaining_wait_time == 0 {
break;
}
let start = Instant::now(); let start = Instant::now();
// Wait for one of the receivers to be ready. `ready_timeout` // Wait for one of the receivers to be ready. `ready_timeout`
// will return if channels either have something, or are // will return if channels either have something, or are
// disconnected. `ready_timeout` can wake up spuriously, // disconnected. `ready_timeout` can wake up spuriously,
// hence the loop // 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()` // Should not early return from this point onwards until `process_votes()`
// returns below to avoid missing any potential `optimistic_confirmed_slots` // returns below to avoid missing any potential `optimistic_confirmed_slots`
@ -567,10 +558,8 @@ impl ClusterInfoVoteListener {
bank_notification_sender, bank_notification_sender,
cluster_confirmed_slot_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![]) Ok(vec![])
} }
@ -1369,7 +1358,7 @@ mod tests {
let exit = Arc::new(AtomicBool::new(false)); let exit = Arc::new(AtomicBool::new(false));
let bank_forks = Arc::new(RwLock::new(BankForks::new(bank))); let bank_forks = Arc::new(RwLock::new(BankForks::new(bank)));
let bank = bank_forks.read().unwrap().get(0).unwrap().clone(); 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 = let optimistically_confirmed_bank =
OptimisticallyConfirmedBank::locked_from_bank_forks_root(&bank_forks); OptimisticallyConfirmedBank::locked_from_bank_forks_root(&bank_forks);
let max_complete_transaction_status_slot = Arc::new(AtomicU64::default()); let max_complete_transaction_status_slot = Arc::new(AtomicU64::default());
@ -1476,7 +1465,7 @@ mod tests {
vec![100; validator_voting_keypairs.len()], vec![100; validator_voting_keypairs.len()],
); );
let bank = Bank::new_for_tests(&genesis_config); 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 exit = Arc::new(AtomicBool::new(false));
let bank_forks = Arc::new(RwLock::new(BankForks::new(bank))); let bank_forks = Arc::new(RwLock::new(BankForks::new(bank)));
let bank = bank_forks.read().unwrap().get(0).unwrap().clone(); let bank = bank_forks.read().unwrap().get(0).unwrap().clone();

View File

@ -4412,7 +4412,7 @@ pub mod tests {
// runs in `update_propagation_status` // runs in `update_propagation_status`
assert!(!progress_map.is_propagated(10)); assert!(!progress_map.is_propagated(10));
let vote_tracker = VoteTracker::new(&bank_forks.root_bank()); let vote_tracker = VoteTracker::default();
vote_tracker.insert_vote(10, vote_pubkey); vote_tracker.insert_vote(10, vote_pubkey);
ReplayStage::update_propagation_status( ReplayStage::update_propagation_status(
&mut progress_map, &mut progress_map,
@ -4497,7 +4497,7 @@ pub mod tests {
); );
} }
let vote_tracker = VoteTracker::new(&bank_forks.root_bank()); let vote_tracker = VoteTracker::default();
for vote_pubkey in &vote_pubkeys { for vote_pubkey in &vote_pubkeys {
// Insert a vote for the last bank for each voter // Insert a vote for the last bank for each voter
vote_tracker.insert_vote(10, *vote_pubkey); vote_tracker.insert_vote(10, *vote_pubkey);
@ -4584,7 +4584,7 @@ pub mod tests {
progress_map.insert(i, fork_progress); progress_map.insert(i, fork_progress);
} }
let vote_tracker = VoteTracker::new(&bank_forks.root_bank()); let vote_tracker = VoteTracker::default();
// Insert a new vote // Insert a new vote
vote_tracker.insert_vote(10, vote_pubkeys[2]); vote_tracker.insert_vote(10, vote_pubkeys[2]);

View File

@ -507,7 +507,7 @@ pub mod tests {
None, None,
None, None,
None, None,
Arc::new(VoteTracker::new(&bank)), Arc::<VoteTracker>::default(),
retransmit_slots_sender, retransmit_slots_sender,
gossip_verified_vote_hash_receiver, gossip_verified_vote_hash_receiver,
verified_vote_receiver, verified_vote_receiver,

View File

@ -95,7 +95,6 @@ use {
std::{ std::{
collections::{HashMap, HashSet}, collections::{HashMap, HashSet},
net::SocketAddr, net::SocketAddr,
ops::Deref,
path::{Path, PathBuf}, path::{Path, PathBuf},
sync::{ sync::{
atomic::{AtomicBool, AtomicU64, Ordering}, atomic::{AtomicBool, AtomicU64, Ordering},
@ -801,10 +800,7 @@ impl Validator {
"New shred signal for the TVU should be the same as the clear bank signal." "New shred signal for the TVU should be the same as the clear bank signal."
); );
let vote_tracker = Arc::new(VoteTracker::new( let vote_tracker = Arc::<VoteTracker>::default();
bank_forks.read().unwrap().root_bank().deref(),
));
let mut cost_model = CostModel::default(); let mut cost_model = CostModel::default();
cost_model.initialize_cost_table(&blockstore.read_program_costs().unwrap()); cost_model.initialize_cost_table(&blockstore.read_program_costs().unwrap());
let cost_model = Arc::new(RwLock::new(cost_model)); let cost_model = Arc::new(RwLock::new(cost_model));