diff --git a/core/src/tpu.rs b/core/src/tpu.rs index f34c4e6cf3..d2d3b7e732 100644 --- a/core/src/tpu.rs +++ b/core/src/tpu.rs @@ -40,6 +40,13 @@ use { pub const DEFAULT_TPU_COALESCE_MS: u64 = 5; +pub struct TpuSockets { + pub transactions: Vec, + pub transaction_forwards: Vec, + pub vote: Vec, + pub broadcast: Vec, +} + pub struct Tpu { fetch_stage: FetchStage, sigverify_stage: SigVerifyStage, @@ -56,10 +63,7 @@ impl Tpu { poh_recorder: &Arc>, entry_receiver: Receiver, retransmit_slots_receiver: RetransmitSlotsReceiver, - transactions_sockets: Vec, - tpu_forwards_sockets: Vec, - tpu_vote_sockets: Vec, - broadcast_sockets: Vec, + sockets: TpuSockets, subscriptions: &Arc, transaction_status_sender: Option, blockstore: &Arc, @@ -77,6 +81,13 @@ impl Tpu { cluster_confirmed_slot_sender: GossipDuplicateConfirmedSlotsSender, cost_model: &Arc>, ) -> Self { + let TpuSockets { + transactions: transactions_sockets, + transaction_forwards: tpu_forwards_sockets, + vote: tpu_vote_sockets, + broadcast: broadcast_sockets, + } = sockets; + let (packet_sender, packet_receiver) = channel(); let (vote_packet_sender, vote_packet_receiver) = channel(); let fetch_stage = FetchStage::new_with_sender( diff --git a/core/src/tvu.rs b/core/src/tvu.rs index a8325973aa..b78150f44c 100644 --- a/core/src/tvu.rs +++ b/core/src/tvu.rs @@ -78,7 +78,7 @@ pub struct Tvu { drop_bank_service: DropBankService, } -pub struct Sockets { +pub struct TvuSockets { pub fetch: Vec, pub repair: UdpSocket, pub retransmit: Vec, @@ -116,7 +116,7 @@ impl Tvu { authorized_voter_keypairs: Arc>>>, bank_forks: &Arc>, cluster_info: &Arc, - sockets: Sockets, + sockets: TvuSockets, blockstore: Arc, ledger_signal_receiver: Receiver, rpc_subscriptions: &Arc, @@ -146,7 +146,7 @@ impl Tvu { last_full_snapshot_slot: Option, block_metadata_notifier: Option, ) -> Self { - let Sockets { + let TvuSockets { repair: repair_socket, fetch: fetch_sockets, retransmit: retransmit_sockets, @@ -464,7 +464,7 @@ pub mod tests { &bank_forks, &cref1, { - Sockets { + TvuSockets { repair: target1.sockets.repair, retransmit: target1.sockets.retransmit_sockets, fetch: target1.sockets.tvu, diff --git a/core/src/validator.rs b/core/src/validator.rs index 50b747a255..98fdfc2b17 100644 --- a/core/src/validator.rs +++ b/core/src/validator.rs @@ -17,8 +17,8 @@ use { stats_reporter_service::StatsReporterService, system_monitor_service::{verify_udp_stats_access, SystemMonitorService}, tower_storage::TowerStorage, - tpu::{Tpu, DEFAULT_TPU_COALESCE_MS}, - tvu::{Sockets, Tvu, TvuConfig}, + tpu::{Tpu, TpuSockets, DEFAULT_TPU_COALESCE_MS}, + tvu::{Tvu, TvuConfig, TvuSockets}, }, crossbeam_channel::{bounded, unbounded}, rand::{thread_rng, Rng}, @@ -822,35 +822,12 @@ impl Validator { authorized_voter_keypairs, &bank_forks, &cluster_info, - Sockets { - repair: node - .sockets - .repair - .try_clone() - .expect("Failed to clone repair socket"), - retransmit: node - .sockets - .retransmit_sockets - .iter() - .map(|s| s.try_clone().expect("Failed to clone retransmit socket")) - .collect(), - fetch: node - .sockets - .tvu - .iter() - .map(|s| s.try_clone().expect("Failed to clone TVU Sockets")) - .collect(), - forwards: node - .sockets - .tvu_forwards - .iter() - .map(|s| s.try_clone().expect("Failed to clone TVU forwards Sockets")) - .collect(), - ancestor_hashes_requests: node - .sockets - .ancestor_hashes_requests - .try_clone() - .expect("Failed to clone ancestor_hashes_requests socket"), + TvuSockets { + repair: node.sockets.repair, + retransmit: node.sockets.retransmit_sockets, + fetch: node.sockets.tvu, + forwards: node.sockets.tvu_forwards, + ancestor_hashes_requests: node.sockets.ancestor_hashes_requests, }, blockstore.clone(), ledger_signal_receiver, @@ -902,10 +879,12 @@ impl Validator { &poh_recorder, entry_receiver, retransmit_slots_receiver, - node.sockets.tpu, - node.sockets.tpu_forwards, - node.sockets.tpu_vote, - node.sockets.broadcast, + TpuSockets { + transactions: node.sockets.tpu, + transaction_forwards: node.sockets.tpu_forwards, + vote: node.sockets.tpu_vote, + broadcast: node.sockets.broadcast, + }, &rpc_subscriptions, transaction_status_sender, &blockstore,