Use batch_send in forward_buffered_packets (#20330)

This commit is contained in:
Jeff Biseda 2021-09-29 20:49:43 -07:00 committed by GitHub
parent 94668c95c2
commit 3854cfaa00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 1 deletions

View File

@ -41,6 +41,7 @@ use solana_sdk::{
timing::{duration_as_ms, timestamp, AtomicInterval}, timing::{duration_as_ms, timestamp, AtomicInterval},
transaction::{self, SanitizedTransaction, TransactionError, VersionedTransaction}, transaction::{self, SanitizedTransaction, TransactionError, VersionedTransaction},
}; };
use solana_streamer::sendmmsg::{batch_send, SendPktsError};
use solana_transaction_status::token_balances::{ use solana_transaction_status::token_balances::{
collect_token_balances, TransactionTokenBalancesSet, collect_token_balances, TransactionTokenBalancesSet,
}; };
@ -375,11 +376,16 @@ impl BankingStage {
data_budget.update(INTERVAL_MS, |bytes| { data_budget.update(INTERVAL_MS, |bytes| {
std::cmp::min(bytes + MAX_BYTES_PER_INTERVAL, MAX_BYTES_BUDGET) std::cmp::min(bytes + MAX_BYTES_PER_INTERVAL, MAX_BYTES_BUDGET)
}); });
let mut packet_vec = Vec::with_capacity(packets.len());
for p in packets { for p in packets {
if data_budget.take(p.meta.size) { if data_budget.take(p.meta.size) {
socket.send_to(&p.data[..p.meta.size], &tpu_forwards)?; packet_vec.push((&p.data[..p.meta.size], tpu_forwards));
} }
} }
if let Err(SendPktsError::IoError(ioerr, _num_failed)) = batch_send(socket, &packet_vec) {
return Err(ioerr);
}
Ok(()) Ok(())
} }