Skip to content

Commit 202d36d

Browse files
committed
trigger banking shutdown off vote channel close as well
1 parent aa22e46 commit 202d36d

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

core/src/banking_stage.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -653,12 +653,14 @@ impl BankingStage {
653653
let decision_maker = DecisionMaker::from(self.poh_recorder.read().unwrap().deref());
654654

655655
let worker_exit_signal = self.worker_exit_signal.clone();
656+
let shutdown_signal = self.banking_shutdown_signal.clone();
656657
let bank_forks = self.bank_forks.clone();
657658
Builder::new()
658659
.name("solBanknStgVote".to_string())
659660
.spawn(move || {
660661
VoteWorker::new(
661662
worker_exit_signal,
663+
shutdown_signal,
662664
decision_maker,
663665
tpu_receiver,
664666
gossip_receiver,

core/src/banking_stage/vote_worker.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ use {
4343
},
4444
time::Instant,
4545
},
46+
tokio_util::sync::CancellationToken,
4647
};
4748

4849
mod transaction {
@@ -56,6 +57,7 @@ pub const UNPROCESSED_BUFFER_STEP_SIZE: usize = 16;
5657

5758
pub struct VoteWorker {
5859
exit: Arc<AtomicBool>,
60+
shutdown_signal: CancellationToken,
5961
decision_maker: DecisionMaker,
6062
tpu_receiver: VotePacketReceiver,
6163
gossip_receiver: VotePacketReceiver,
@@ -67,6 +69,7 @@ pub struct VoteWorker {
6769
impl VoteWorker {
6870
pub fn new(
6971
exit: Arc<AtomicBool>,
72+
shutdown_signal: CancellationToken,
7073
decision_maker: DecisionMaker,
7174
tpu_receiver: VotePacketReceiver,
7275
gossip_receiver: VotePacketReceiver,
@@ -76,6 +79,7 @@ impl VoteWorker {
7679
) -> Self {
7780
Self {
7881
exit,
82+
shutdown_signal,
7983
decision_maker,
8084
tpu_receiver,
8185
gossip_receiver,
@@ -110,7 +114,11 @@ impl VoteWorker {
110114
VoteSource::Tpu,
111115
) {
112116
Ok(()) | Err(RecvTimeoutError::Timeout) => (),
113-
Err(RecvTimeoutError::Disconnected) => break,
117+
Err(RecvTimeoutError::Disconnected) => {
118+
self.shutdown_signal.cancel();
119+
120+
break;
121+
}
114122
}
115123
// Check for new packets from the gossip receiver
116124
match self.gossip_receiver.receive_and_buffer_packets(
@@ -120,7 +128,11 @@ impl VoteWorker {
120128
VoteSource::Gossip,
121129
) {
122130
Ok(()) | Err(RecvTimeoutError::Timeout) => (),
123-
Err(RecvTimeoutError::Disconnected) => break,
131+
Err(RecvTimeoutError::Disconnected) => {
132+
self.shutdown_signal.cancel();
133+
134+
break;
135+
}
124136
}
125137
banking_stage_stats.report(1000);
126138
}

0 commit comments

Comments
 (0)