Create UDP socket once per process_loop for forwarding transactions
This commit is contained in:
@ -74,10 +74,10 @@ impl BankingStage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn forward_unprocessed_packets(
|
fn forward_unprocessed_packets(
|
||||||
|
socket: &std::net::UdpSocket,
|
||||||
tpu: &std::net::SocketAddr,
|
tpu: &std::net::SocketAddr,
|
||||||
unprocessed_packets: UnprocessedPackets,
|
unprocessed_packets: UnprocessedPackets,
|
||||||
) -> std::io::Result<()> {
|
) -> std::io::Result<()> {
|
||||||
let socket = UdpSocket::bind("0.0.0.0:0")?;
|
|
||||||
for (packets, start_index) in unprocessed_packets {
|
for (packets, start_index) in unprocessed_packets {
|
||||||
let packets = packets.read().unwrap();
|
let packets = packets.read().unwrap();
|
||||||
for packet in packets.packets.iter().skip(start_index) {
|
for packet in packets.packets.iter().skip(start_index) {
|
||||||
@ -92,12 +92,13 @@ impl BankingStage {
|
|||||||
poh_recorder: &Arc<Mutex<PohRecorder>>,
|
poh_recorder: &Arc<Mutex<PohRecorder>>,
|
||||||
cluster_info: &Arc<RwLock<ClusterInfo>>,
|
cluster_info: &Arc<RwLock<ClusterInfo>>,
|
||||||
) {
|
) {
|
||||||
|
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
|
||||||
loop {
|
loop {
|
||||||
match Self::process_packets(&verified_receiver, &poh_recorder) {
|
match Self::process_packets(&verified_receiver, &poh_recorder) {
|
||||||
Err(Error::RecvTimeoutError(RecvTimeoutError::Timeout)) => (),
|
Err(Error::RecvTimeoutError(RecvTimeoutError::Timeout)) => (),
|
||||||
Ok(unprocessed_packets) => {
|
Ok(unprocessed_packets) => {
|
||||||
if let Some(leader) = cluster_info.read().unwrap().leader_data() {
|
if let Some(leader) = cluster_info.read().unwrap().leader_data() {
|
||||||
let _ = Self::forward_unprocessed_packets(&leader.tpu, unprocessed_packets);
|
let _ = Self::forward_unprocessed_packets(&socket, &leader.tpu, unprocessed_packets);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
|
Reference in New Issue
Block a user