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},
transaction::{self, SanitizedTransaction, TransactionError, VersionedTransaction},
};
use solana_streamer::sendmmsg::{batch_send, SendPktsError};
use solana_transaction_status::token_balances::{
collect_token_balances, TransactionTokenBalancesSet,
};
@ -375,11 +376,16 @@ impl BankingStage {
data_budget.update(INTERVAL_MS, |bytes| {
std::cmp::min(bytes + MAX_BYTES_PER_INTERVAL, MAX_BYTES_BUDGET)
});
let mut packet_vec = Vec::with_capacity(packets.len());
for p in packets {
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(())
}