diff --git a/votor/src/consensus_metrics.rs b/votor/src/consensus_metrics.rs index 69cafb375e..92cfc9ee75 100644 --- a/votor/src/consensus_metrics.rs +++ b/votor/src/consensus_metrics.rs @@ -11,7 +11,7 @@ use { atomic::{AtomicBool, Ordering}, Arc, }, - thread::Builder, + thread::{Builder, JoinHandle}, time::{Duration, Instant}, }, }; @@ -149,14 +149,14 @@ impl ConsensusMetrics { epoch: Epoch, receiver: ConsensusMetricsEventReceiver, exit: Arc, - ) { + ) -> JoinHandle<()> { Builder::new() - .name("consensus-metrics".into()) + .name("solConsMetrics".into()) .spawn(move || { let mut metrics = Self::new(epoch, receiver); metrics.run(exit); }) - .expect("Failed to start consensus metrics thread"); + .expect("Failed to start consensus metrics thread") } fn run(&mut self, exit: Arc) { diff --git a/votor/src/event_handler.rs b/votor/src/event_handler.rs index 26f86a7a67..774238dba9 100644 --- a/votor/src/event_handler.rs +++ b/votor/src/event_handler.rs @@ -92,7 +92,7 @@ impl EventHandler { pub(crate) fn new(ctx: EventHandlerContext) -> Self { let exit = ctx.exit.clone(); let t_event_handler = Builder::new() - .name("solVotorEventLoop".to_string()) + .name("solVotorEvLoop".to_string()) .spawn(move || { if let Err(e) = Self::event_loop(ctx) { info!("Event loop exited: {e:?}. Shutting down"); diff --git a/votor/src/staked_validators_cache.rs b/votor/src/staked_validators_cache.rs index 67c87bf11c..50bb8b710a 100644 --- a/votor/src/staked_validators_cache.rs +++ b/votor/src/staked_validators_cache.rs @@ -126,7 +126,7 @@ impl StakedValidatorsCache { nodes.dedup_by_key(|node| node.alpenglow_socket); nodes.sort_unstable_by(|a, b| a.stake.cmp(&b.stake)); - let mut alpenglow_sockets = Vec::new(); + let mut alpenglow_sockets = Vec::with_capacity(nodes.len()); let override_map = self .alpenglow_port_override .as_ref() diff --git a/votor/src/voting_utils.rs b/votor/src/voting_utils.rs index a6afc66072..2796171544 100644 --- a/votor/src/voting_utils.rs +++ b/votor/src/voting_utils.rs @@ -126,7 +126,7 @@ pub struct VotingContext { pub consensus_metrics_sender: ConsensusMetricsEventSender, } -fn get_bls_keypair( +fn get_or_insert_bls_keypair( derived_bls_keypairs: &mut HashMap>, authorized_voter_keypair: &Arc, ) -> Result, BlsError> { @@ -215,7 +215,7 @@ pub fn generate_vote_tx( authorized_voter_keypair = keypair.clone(); } - let bls_keypair = get_bls_keypair(derived_bls_keypairs, &authorized_voter_keypair) + let bls_keypair = get_or_insert_bls_keypair(derived_bls_keypairs, &authorized_voter_keypair) .unwrap_or_else(|e| panic!("Failed to derive my own BLS keypair: {e:?}")); let my_bls_pubkey: BLSPubkey = bls_keypair.public; if my_bls_pubkey != bls_pubkey_in_vote_account { diff --git a/votor/src/votor.rs b/votor/src/votor.rs index 9360c2593e..da720fe048 100644 --- a/votor/src/votor.rs +++ b/votor/src/votor.rs @@ -80,7 +80,7 @@ use { std::{ collections::HashMap, sync::{atomic::AtomicBool, Arc, RwLock}, - thread, + thread::{self, JoinHandle}, time::Duration, }, }; @@ -141,6 +141,7 @@ pub struct Votor { consensus_pool_service: ConsensusPoolService, timer_manager: Arc>, consensus_rewards_service: ConsensusRewardsService, + metrics: JoinHandle<()>, } impl Votor { @@ -247,7 +248,11 @@ impl Votor { commitment_sender, }; - ConsensusMetrics::start_metrics_loop(root_epoch, consensus_metrics_receiver, exit.clone()); + let metrics = ConsensusMetrics::start_metrics_loop( + root_epoch, + consensus_metrics_receiver, + exit.clone(), + ); let event_handler = EventHandler::new(event_handler_context); let consensus_pool_service = ConsensusPoolService::new(consensus_pool_context); @@ -266,6 +271,7 @@ impl Votor { consensus_pool_service, timer_manager, consensus_rewards_service, + metrics, } } @@ -287,6 +293,7 @@ impl Votor { } } } + self.metrics.join()?; self.event_handler.join() } }