Skip to content

Commit 9e6bb82

Browse files
v3.0: move forwarding stage backed up warning to send-side (backport of #7986) (#8093)
move forwarding stage backed up warning to send-side (#7986) (cherry picked from commit fff1a49) Co-authored-by: Andrew Fitzgerald <[email protected]>
1 parent c0b0c40 commit 9e6bb82

File tree

2 files changed

+8
-20
lines changed

2 files changed

+8
-20
lines changed

core/src/forwarding_stage.rs

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -236,25 +236,12 @@ impl<VoteClient: ForwardingClient, NonVoteClient: ForwardingClient>
236236
self.buffer_packet_batches(packet_batches, tpu_vote_batch, bank);
237237

238238
// Drain the channel up to timeout
239-
let timed_out = loop {
240-
if now.elapsed() >= TIMEOUT {
241-
break true;
242-
}
239+
while now.elapsed() < TIMEOUT {
243240
match self.receiver.try_recv() {
244241
Ok((packet_batches, tpu_vote_batch)) => {
245242
self.buffer_packet_batches(packet_batches, tpu_vote_batch, bank)
246243
}
247-
Err(_) => break false,
248-
}
249-
};
250-
251-
// If timeout was reached, prevent backup by draining all
252-
// packets in the channel.
253-
if timed_out {
254-
warn!("ForwardingStage is backed up, dropping packets");
255-
while let Ok((packet_batch, _)) = self.receiver.try_recv() {
256-
self.metrics.dropped_on_timeout +=
257-
packet_batch.iter().map(|b| b.len()).sum::<usize>();
244+
Err(_) => break,
258245
}
259246
}
260247

@@ -722,8 +709,6 @@ struct ForwardingStageMetrics {
722709
non_votes_dropped_on_data_budget: usize,
723710
non_votes_forwarded: usize,
724711
non_votes_dropped_on_send: usize,
725-
726-
dropped_on_timeout: usize,
727712
}
728713

729714
impl ForwardingStageMetrics {
@@ -803,7 +788,6 @@ impl Default for ForwardingStageMetrics {
803788
non_votes_dropped_on_data_budget: 0,
804789
non_votes_forwarded: 0,
805790
non_votes_dropped_on_send: 0,
806-
dropped_on_timeout: 0,
807791
}
808792
}
809793
}

core/src/sigverify.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use {
1313
sigverify_stage::{SigVerifier, SigVerifyServiceError},
1414
},
1515
agave_banking_stage_ingress_types::BankingPacketBatch,
16-
crossbeam_channel::Sender,
16+
crossbeam_channel::{Sender, TrySendError},
1717
solana_perf::{cuda_runtime::PinnedVec, packet::PacketBatch, recycler::Recycler, sigverify},
1818
};
1919

@@ -61,7 +61,11 @@ impl SigVerifier for TransactionSigVerifier {
6161
if let Some(forward_stage_sender) = &self.forward_stage_sender {
6262
self.banking_stage_sender
6363
.send(banking_packet_batch.clone())?;
64-
let _ = forward_stage_sender.try_send((banking_packet_batch, self.reject_non_vote));
64+
if let Err(TrySendError::Full(_)) =
65+
forward_stage_sender.try_send((banking_packet_batch, self.reject_non_vote))
66+
{
67+
warn!("forwarding stage channel is full, dropping packets.");
68+
}
6569
} else {
6670
self.banking_stage_sender.send(banking_packet_batch)?;
6771
}

0 commit comments

Comments
 (0)