Rename BroadcastService back to BroadcastStage
This commit is contained in:
parent
041a06b432
commit
2782922f7a
|
@ -1,4 +1,4 @@
|
||||||
//! The `broadcast_service` broadcasts data from a leader node to validators
|
//! A stage to broadcast data from a leader node to validators
|
||||||
//!
|
//!
|
||||||
use crate::blocktree::Blocktree;
|
use crate::blocktree::Blocktree;
|
||||||
use crate::cluster_info::{ClusterInfo, ClusterInfoError, NodeInfo, DATA_PLANE_FANOUT};
|
use crate::cluster_info::{ClusterInfo, ClusterInfoError, NodeInfo, DATA_PLANE_FANOUT};
|
||||||
|
@ -24,7 +24,7 @@ use std::thread::{self, Builder, JoinHandle};
|
||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Clone)]
|
#[derive(Debug, PartialEq, Eq, Clone)]
|
||||||
pub enum BroadcastServiceReturnType {
|
pub enum BroadcastStageReturnType {
|
||||||
LeaderRotation,
|
LeaderRotation,
|
||||||
ChannelDisconnected,
|
ChannelDisconnected,
|
||||||
ExitSignal,
|
ExitSignal,
|
||||||
|
@ -138,7 +138,7 @@ impl Broadcast {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implement a destructor for the BroadcastService3 thread to signal it exited
|
// Implement a destructor for the BroadcastStage thread to signal it exited
|
||||||
// even on panics
|
// even on panics
|
||||||
struct Finalizer {
|
struct Finalizer {
|
||||||
exit_sender: Arc<AtomicBool>,
|
exit_sender: Arc<AtomicBool>,
|
||||||
|
@ -156,11 +156,11 @@ impl Drop for Finalizer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct BroadcastService {
|
pub struct BroadcastStage {
|
||||||
thread_hdl: JoinHandle<BroadcastServiceReturnType>,
|
thread_hdl: JoinHandle<BroadcastStageReturnType>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl BroadcastService {
|
impl BroadcastStage {
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
fn run(
|
fn run(
|
||||||
slot_height: u64,
|
slot_height: u64,
|
||||||
|
@ -171,7 +171,7 @@ impl BroadcastService {
|
||||||
receiver: &Receiver<Vec<(Entry, u64)>>,
|
receiver: &Receiver<Vec<(Entry, u64)>>,
|
||||||
exit_signal: &Arc<AtomicBool>,
|
exit_signal: &Arc<AtomicBool>,
|
||||||
blocktree: &Arc<Blocktree>,
|
blocktree: &Arc<Blocktree>,
|
||||||
) -> BroadcastServiceReturnType {
|
) -> BroadcastStageReturnType {
|
||||||
let me = cluster_info.read().unwrap().my_data().clone();
|
let me = cluster_info.read().unwrap().my_data().clone();
|
||||||
|
|
||||||
let mut broadcast = Broadcast {
|
let mut broadcast = Broadcast {
|
||||||
|
@ -185,7 +185,7 @@ impl BroadcastService {
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
if exit_signal.load(Ordering::Relaxed) {
|
if exit_signal.load(Ordering::Relaxed) {
|
||||||
return BroadcastServiceReturnType::ExitSignal;
|
return BroadcastStageReturnType::ExitSignal;
|
||||||
}
|
}
|
||||||
let mut broadcast_table = cluster_info
|
let mut broadcast_table = cluster_info
|
||||||
.read()
|
.read()
|
||||||
|
@ -204,7 +204,7 @@ impl BroadcastService {
|
||||||
) {
|
) {
|
||||||
match e {
|
match e {
|
||||||
Error::RecvTimeoutError(RecvTimeoutError::Disconnected) | Error::SendError => {
|
Error::RecvTimeoutError(RecvTimeoutError::Disconnected) | Error::SendError => {
|
||||||
return BroadcastServiceReturnType::ChannelDisconnected;
|
return BroadcastStageReturnType::ChannelDisconnected;
|
||||||
}
|
}
|
||||||
Error::RecvTimeoutError(RecvTimeoutError::Timeout) => (),
|
Error::RecvTimeoutError(RecvTimeoutError::Timeout) => (),
|
||||||
Error::ClusterInfoError(ClusterInfoError::NoPeers) => (), // TODO: Why are the unit-tests throwing hundreds of these?
|
Error::ClusterInfoError(ClusterInfoError::NoPeers) => (), // TODO: Why are the unit-tests throwing hundreds of these?
|
||||||
|
@ -267,10 +267,10 @@ impl BroadcastService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Service for BroadcastService {
|
impl Service for BroadcastStage {
|
||||||
type JoinReturnType = BroadcastServiceReturnType;
|
type JoinReturnType = BroadcastStageReturnType;
|
||||||
|
|
||||||
fn join(self) -> thread::Result<BroadcastServiceReturnType> {
|
fn join(self) -> thread::Result<BroadcastStageReturnType> {
|
||||||
self.thread_hdl.join()
|
self.thread_hdl.join()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -291,9 +291,9 @@ mod test {
|
||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
struct MockBroadcastService {
|
struct MockBroadcastStage {
|
||||||
blocktree: Arc<Blocktree>,
|
blocktree: Arc<Blocktree>,
|
||||||
broadcast_service: BroadcastService,
|
broadcast_service: BroadcastStage,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn setup_dummy_broadcast_service(
|
fn setup_dummy_broadcast_service(
|
||||||
|
@ -302,7 +302,7 @@ mod test {
|
||||||
ledger_path: &str,
|
ledger_path: &str,
|
||||||
entry_receiver: Receiver<Vec<(Entry, u64)>>,
|
entry_receiver: Receiver<Vec<(Entry, u64)>>,
|
||||||
blob_index: u64,
|
blob_index: u64,
|
||||||
) -> MockBroadcastService {
|
) -> MockBroadcastStage {
|
||||||
// Make the database ledger
|
// Make the database ledger
|
||||||
let blocktree = Arc::new(Blocktree::open(ledger_path).unwrap());
|
let blocktree = Arc::new(Blocktree::open(ledger_path).unwrap());
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ mod test {
|
||||||
let bank = Arc::new(Bank::default());
|
let bank = Arc::new(Bank::default());
|
||||||
|
|
||||||
// Start up the broadcast stage
|
// Start up the broadcast stage
|
||||||
let broadcast_service = BroadcastService::new(
|
let broadcast_service = BroadcastStage::new(
|
||||||
slot_height,
|
slot_height,
|
||||||
&bank,
|
&bank,
|
||||||
leader_info.sockets.broadcast,
|
leader_info.sockets.broadcast,
|
||||||
|
@ -333,7 +333,7 @@ mod test {
|
||||||
&blocktree,
|
&blocktree,
|
||||||
);
|
);
|
||||||
|
|
||||||
MockBroadcastService {
|
MockBroadcastStage {
|
||||||
blocktree,
|
blocktree,
|
||||||
broadcast_service,
|
broadcast_service,
|
||||||
}
|
}
|
|
@ -10,7 +10,7 @@
|
||||||
pub mod bank_forks;
|
pub mod bank_forks;
|
||||||
pub mod banking_stage;
|
pub mod banking_stage;
|
||||||
pub mod blob_fetch_stage;
|
pub mod blob_fetch_stage;
|
||||||
pub mod broadcast_service;
|
pub mod broadcast_stage;
|
||||||
#[cfg(feature = "chacha")]
|
#[cfg(feature = "chacha")]
|
||||||
pub mod chacha;
|
pub mod chacha;
|
||||||
#[cfg(all(feature = "chacha", feature = "cuda"))]
|
#[cfg(all(feature = "chacha", feature = "cuda"))]
|
||||||
|
|
16
src/tpu.rs
16
src/tpu.rs
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
use crate::banking_stage::{BankingStage, UnprocessedPackets};
|
use crate::banking_stage::{BankingStage, UnprocessedPackets};
|
||||||
use crate::blocktree::Blocktree;
|
use crate::blocktree::Blocktree;
|
||||||
use crate::broadcast_service::BroadcastService;
|
use crate::broadcast_stage::BroadcastStage;
|
||||||
use crate::cluster_info::ClusterInfo;
|
use crate::cluster_info::ClusterInfo;
|
||||||
use crate::cluster_info_vote_listener::ClusterInfoVoteListener;
|
use crate::cluster_info_vote_listener::ClusterInfoVoteListener;
|
||||||
use crate::fetch_stage::FetchStage;
|
use crate::fetch_stage::FetchStage;
|
||||||
|
@ -29,7 +29,7 @@ pub struct LeaderServices {
|
||||||
sigverify_stage: SigVerifyStage,
|
sigverify_stage: SigVerifyStage,
|
||||||
banking_stage: BankingStage,
|
banking_stage: BankingStage,
|
||||||
cluster_info_vote_listener: ClusterInfoVoteListener,
|
cluster_info_vote_listener: ClusterInfoVoteListener,
|
||||||
broadcast_service: BroadcastService,
|
broadcast_stage: BroadcastStage,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl LeaderServices {
|
impl LeaderServices {
|
||||||
|
@ -38,14 +38,14 @@ impl LeaderServices {
|
||||||
sigverify_stage: SigVerifyStage,
|
sigverify_stage: SigVerifyStage,
|
||||||
banking_stage: BankingStage,
|
banking_stage: BankingStage,
|
||||||
cluster_info_vote_listener: ClusterInfoVoteListener,
|
cluster_info_vote_listener: ClusterInfoVoteListener,
|
||||||
broadcast_service: BroadcastService,
|
broadcast_stage: BroadcastStage,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
LeaderServices {
|
LeaderServices {
|
||||||
fetch_stage,
|
fetch_stage,
|
||||||
sigverify_stage,
|
sigverify_stage,
|
||||||
banking_stage,
|
banking_stage,
|
||||||
cluster_info_vote_listener,
|
cluster_info_vote_listener,
|
||||||
broadcast_service,
|
broadcast_stage,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ impl LeaderServices {
|
||||||
results.push(self.sigverify_stage.join());
|
results.push(self.sigverify_stage.join());
|
||||||
results.push(self.cluster_info_vote_listener.join());
|
results.push(self.cluster_info_vote_listener.join());
|
||||||
results.push(self.banking_stage.join());
|
results.push(self.banking_stage.join());
|
||||||
let broadcast_result = self.broadcast_service.join();
|
let broadcast_result = self.broadcast_stage.join();
|
||||||
for result in results {
|
for result in results {
|
||||||
result?;
|
result?;
|
||||||
}
|
}
|
||||||
|
@ -217,7 +217,7 @@ impl Tpu {
|
||||||
let (sigverify_stage, verified_receiver) =
|
let (sigverify_stage, verified_receiver) =
|
||||||
SigVerifyStage::new(packet_receiver, sigverify_disabled);
|
SigVerifyStage::new(packet_receiver, sigverify_disabled);
|
||||||
|
|
||||||
// TODO: Fix BankingStage/BroadcastService to operate on `slot` directly instead of
|
// TODO: Fix BankingStage/BroadcastStage to operate on `slot` directly instead of
|
||||||
// `max_tick_height`
|
// `max_tick_height`
|
||||||
let max_tick_height = (slot + 1) * bank.ticks_per_slot() - 1;
|
let max_tick_height = (slot + 1) * bank.ticks_per_slot() - 1;
|
||||||
let blob_index = blocktree
|
let blob_index = blocktree
|
||||||
|
@ -234,7 +234,7 @@ impl Tpu {
|
||||||
self.id,
|
self.id,
|
||||||
);
|
);
|
||||||
|
|
||||||
let broadcast_service = BroadcastService::new(
|
let broadcast_stage = BroadcastStage::new(
|
||||||
slot,
|
slot,
|
||||||
bank,
|
bank,
|
||||||
broadcast_socket,
|
broadcast_socket,
|
||||||
|
@ -250,7 +250,7 @@ impl Tpu {
|
||||||
sigverify_stage,
|
sigverify_stage,
|
||||||
banking_stage,
|
banking_stage,
|
||||||
cluster_info_vote_listener,
|
cluster_info_vote_listener,
|
||||||
broadcast_service,
|
broadcast_stage,
|
||||||
);
|
);
|
||||||
self.tpu_mode = Some(TpuMode::Leader(svcs));
|
self.tpu_mode = Some(TpuMode::Leader(svcs));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue