@@ -50,10 +50,10 @@ mod transaction {
5050 pub use solana_transaction_error:: TransactionResult as Result ;
5151}
5252
53- // This vote batch size was selected to balance the following two things:
54- // 1. Amortize execution overhead (Larger is better)
55- // 2. Constrain max entry size for FEC set packing (Smaller is better)
56- pub const UNPROCESSED_BUFFER_STEP_SIZE : usize = 16 ;
53+ // Process vote packets one at a time to avoid over reserving block CUs during packing,
54+ // also keep each recorded vote batch as small as possible, which favors entry/FEC-set
55+ // packing.
56+ pub const UNPROCESSED_BUFFER_STEP_SIZE : usize = 1 ;
5757
5858pub struct VoteWorker {
5959 exit : Arc < AtomicBool > ,
@@ -501,8 +501,8 @@ impl VoteWorker {
501501 . collect ( )
502502 }
503503
504- fn extract_retryable (
505- vote_packets : & mut ArrayVec < RuntimeTransactionView , 16 > ,
504+ fn extract_retryable < const N : usize > (
505+ vote_packets : & mut ArrayVec < RuntimeTransactionView , N > ,
506506 retryable_vote_indices : Vec < usize > ,
507507 ) -> impl Iterator < Item = RuntimeTransactionView > + ' _ {
508508 debug_assert ! ( retryable_vote_indices. is_sorted( ) ) ;
@@ -659,11 +659,9 @@ mod tests {
659659 #[ test]
660660 fn extract_retryable_one_all_retryable ( ) {
661661 let keypair_a = ValidatorVoteKeypairs :: new_rand ( ) ;
662- let mut packets = ArrayVec :: from_iter ( [ to_runtime_transaction_view ( packet_from_slots (
663- vec ! [ ( 1 , 1 ) ] ,
664- & keypair_a,
665- None ,
666- ) ) ] ) ;
662+ let mut packets: ArrayVec < _ , 1 > = ArrayVec :: from_iter ( [ to_runtime_transaction_view (
663+ packet_from_slots ( vec ! [ ( 1 , 1 ) ] , & keypair_a, None ) ,
664+ ) ] ) ;
667665 let retryable_indices = vec ! [ 0 ] ;
668666
669667 // Assert - Able to extract exactly one packet.
@@ -676,11 +674,9 @@ mod tests {
676674 #[ test]
677675 fn extract_retryable_one_none_retryable ( ) {
678676 let keypair_a = ValidatorVoteKeypairs :: new_rand ( ) ;
679- let mut packets = ArrayVec :: from_iter ( [ to_runtime_transaction_view ( packet_from_slots (
680- vec ! [ ( 1 , 1 ) ] ,
681- & keypair_a,
682- None ,
683- ) ) ] ) ;
677+ let mut packets: ArrayVec < _ , 1 > = ArrayVec :: from_iter ( [ to_runtime_transaction_view (
678+ packet_from_slots ( vec ! [ ( 1 , 1 ) ] , & keypair_a, None ) ,
679+ ) ] ) ;
684680 let retryable_indices = vec ! [ ] ;
685681
686682 // Assert - Able to extract exactly zero packets.
@@ -691,7 +687,7 @@ mod tests {
691687 #[ test]
692688 fn extract_retryable_three_last_retryable ( ) {
693689 let keypair_a = ValidatorVoteKeypairs :: new_rand ( ) ;
694- let mut packets = ArrayVec :: from_iter (
690+ let mut packets: ArrayVec < _ , 3 > = ArrayVec :: from_iter (
695691 [
696692 packet_from_slots ( vec ! [ ( 5 , 3 ) ] , & keypair_a, None ) ,
697693 packet_from_slots ( vec ! [ ( 6 , 2 ) ] , & keypair_a, None ) ,
@@ -712,7 +708,7 @@ mod tests {
712708 #[ test]
713709 fn extract_retryable_three_first_last_retryable ( ) {
714710 let keypair_a = ValidatorVoteKeypairs :: new_rand ( ) ;
715- let mut packets = ArrayVec :: from_iter (
711+ let mut packets: ArrayVec < _ , 3 > = ArrayVec :: from_iter (
716712 [
717713 packet_from_slots ( vec ! [ ( 5 , 3 ) ] , & keypair_a, None ) ,
718714 packet_from_slots ( vec ! [ ( 6 , 2 ) ] , & keypair_a, None ) ,
0 commit comments