banking_stage::handle_forwarding is retaining buffered packets with
empty index, so nothing is held:
https://github.com/solana-labs/solana/blob/6f3926b64/core/src/banking_stage.rs#L520
(cherry picked from commit 701fc93343
)
Co-authored-by: behzad nouri <behzadnouri@gmail.com>
This commit is contained in:
@ -503,29 +503,30 @@ impl BankingStage {
|
|||||||
socket: &UdpSocket,
|
socket: &UdpSocket,
|
||||||
hold: bool,
|
hold: bool,
|
||||||
) {
|
) {
|
||||||
if enable_forwarding {
|
if !enable_forwarding {
|
||||||
let next_leader = poh_recorder
|
if !hold {
|
||||||
.lock()
|
buffered_packets.clear();
|
||||||
.unwrap()
|
}
|
||||||
.leader_after_n_slots(FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET);
|
return;
|
||||||
next_leader.map_or((), |leader_pubkey| {
|
}
|
||||||
let leader_addr = {
|
let next_leader = match poh_recorder
|
||||||
cluster_info.lookup_contact_info(&leader_pubkey, |leader| leader.tpu_forwards)
|
.lock()
|
||||||
};
|
.unwrap()
|
||||||
|
.leader_after_n_slots(FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET)
|
||||||
leader_addr.map_or((), |leader_addr| {
|
{
|
||||||
let _ =
|
Some(pubkey) => pubkey,
|
||||||
Self::forward_buffered_packets(&socket, &leader_addr, &buffered_packets);
|
None => return,
|
||||||
if hold {
|
};
|
||||||
buffered_packets.retain(|b| b.1.is_empty());
|
let addr = match cluster_info.lookup_contact_info(&next_leader, |ci| ci.tpu_forwards) {
|
||||||
for b in buffered_packets.iter_mut() {
|
Some(addr) => addr,
|
||||||
b.2 = true;
|
None => return,
|
||||||
}
|
};
|
||||||
} else {
|
let _ = Self::forward_buffered_packets(socket, &addr, buffered_packets);
|
||||||
buffered_packets.clear();
|
if hold {
|
||||||
}
|
buffered_packets.retain(|(_, index, _)| !index.is_empty());
|
||||||
})
|
for (_, _, forwarded) in buffered_packets.iter_mut() {
|
||||||
})
|
*forwarded = true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
buffered_packets.clear();
|
buffered_packets.clear();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user