(cherry picked from commit e1b59ded4b)
Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
			
			
This commit is contained in:
		| @@ -196,6 +196,7 @@ impl SendTransactionService { | |||||||
|                             &tpu_address, |                             &tpu_address, | ||||||
|                             &mut transactions, |                             &mut transactions, | ||||||
|                             &leader_info, |                             &leader_info, | ||||||
|  |                             leader_forward_count, | ||||||
|                         ); |                         ); | ||||||
|                     } |                     } | ||||||
|                     last_status_check = Instant::now(); |                     last_status_check = Instant::now(); | ||||||
| @@ -217,6 +218,7 @@ impl SendTransactionService { | |||||||
|         tpu_address: &SocketAddr, |         tpu_address: &SocketAddr, | ||||||
|         transactions: &mut HashMap<Signature, TransactionInfo>, |         transactions: &mut HashMap<Signature, TransactionInfo>, | ||||||
|         leader_info: &Option<LeaderInfo>, |         leader_info: &Option<LeaderInfo>, | ||||||
|  |         leader_forward_count: u64, | ||||||
|     ) -> ProcessTransactionsResult { |     ) -> ProcessTransactionsResult { | ||||||
|         let mut result = ProcessTransactionsResult::default(); |         let mut result = ProcessTransactionsResult::default(); | ||||||
|  |  | ||||||
| @@ -255,23 +257,25 @@ impl SendTransactionService { | |||||||
|                     info!("Retrying transaction: {}", signature); |                     info!("Retrying transaction: {}", signature); | ||||||
|                     result.retried += 1; |                     result.retried += 1; | ||||||
|                     inc_new_counter_info!("send_transaction_service-retry", 1); |                     inc_new_counter_info!("send_transaction_service-retry", 1); | ||||||
|                     let leaders = leader_info |                     let addresses = leader_info | ||||||
|                         .as_ref() |                         .as_ref() | ||||||
|                         .map(|leader_info| leader_info.get_leader_tpus(1)); |                         .map(|leader_info| leader_info.get_leader_tpus(leader_forward_count)); | ||||||
|                     let leader = if let Some(leaders) = leaders { |                     let addresses = addresses | ||||||
|                         if leaders.is_empty() { |                         .map(|address_list| { | ||||||
|                             &tpu_address |                             if address_list.is_empty() { | ||||||
|                         } else { |                                 vec![tpu_address] | ||||||
|                             leaders[0] |                             } else { | ||||||
|                         } |                                 address_list | ||||||
|                     } else { |                             } | ||||||
|                         &tpu_address |                         }) | ||||||
|                     }; |                         .unwrap_or_else(|| vec![&tpu_address]); | ||||||
|                     Self::send_transaction( |                     for address in addresses { | ||||||
|                         &send_socket, |                         Self::send_transaction( | ||||||
|                         leader, |                             &send_socket, | ||||||
|                         &transaction_info.wire_transaction, |                             address, | ||||||
|                     ); |                             &transaction_info.wire_transaction, | ||||||
|  |                         ); | ||||||
|  |                     } | ||||||
|                     true |                     true | ||||||
|                 } |                 } | ||||||
|                 Some((_slot, status)) => { |                 Some((_slot, status)) => { | ||||||
| @@ -352,6 +356,7 @@ mod test { | |||||||
|         let bank_forks = Arc::new(RwLock::new(BankForks::new(bank))); |         let bank_forks = Arc::new(RwLock::new(BankForks::new(bank))); | ||||||
|         let send_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); |         let send_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); | ||||||
|         let tpu_address = "127.0.0.1:0".parse().unwrap(); |         let tpu_address = "127.0.0.1:0".parse().unwrap(); | ||||||
|  |         let leader_forward_count = 1; | ||||||
|  |  | ||||||
|         let root_bank = Arc::new(Bank::new_from_parent( |         let root_bank = Arc::new(Bank::new_from_parent( | ||||||
|             &bank_forks.read().unwrap().working_bank(), |             &bank_forks.read().unwrap().working_bank(), | ||||||
| @@ -391,6 +396,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert!(transactions.is_empty()); |         assert!(transactions.is_empty()); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -413,6 +419,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert!(transactions.is_empty()); |         assert!(transactions.is_empty()); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -435,6 +442,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert!(transactions.is_empty()); |         assert!(transactions.is_empty()); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -457,6 +465,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert_eq!(transactions.len(), 1); |         assert_eq!(transactions.len(), 1); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -480,6 +489,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert_eq!(transactions.len(), 1); |         assert_eq!(transactions.len(), 1); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -500,6 +510,7 @@ mod test { | |||||||
|         let bank_forks = Arc::new(RwLock::new(BankForks::new(bank))); |         let bank_forks = Arc::new(RwLock::new(BankForks::new(bank))); | ||||||
|         let send_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); |         let send_socket = UdpSocket::bind("0.0.0.0:0").unwrap(); | ||||||
|         let tpu_address = "127.0.0.1:0".parse().unwrap(); |         let tpu_address = "127.0.0.1:0".parse().unwrap(); | ||||||
|  |         let leader_forward_count = 1; | ||||||
|  |  | ||||||
|         let root_bank = Arc::new(Bank::new_from_parent( |         let root_bank = Arc::new(Bank::new_from_parent( | ||||||
|             &bank_forks.read().unwrap().working_bank(), |             &bank_forks.read().unwrap().working_bank(), | ||||||
| @@ -556,6 +567,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert!(transactions.is_empty()); |         assert!(transactions.is_empty()); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -582,6 +594,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert!(transactions.is_empty()); |         assert!(transactions.is_empty()); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -610,6 +623,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert!(transactions.is_empty()); |         assert!(transactions.is_empty()); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -636,6 +650,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert!(transactions.is_empty()); |         assert!(transactions.is_empty()); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -663,6 +678,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert!(transactions.is_empty()); |         assert!(transactions.is_empty()); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -690,6 +706,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert_eq!(transactions.len(), 1); |         assert_eq!(transactions.len(), 1); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -718,6 +735,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert_eq!(transactions.len(), 1); |         assert_eq!(transactions.len(), 1); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
| @@ -744,6 +762,7 @@ mod test { | |||||||
|             &tpu_address, |             &tpu_address, | ||||||
|             &mut transactions, |             &mut transactions, | ||||||
|             &None, |             &None, | ||||||
|  |             leader_forward_count, | ||||||
|         ); |         ); | ||||||
|         assert_eq!(transactions.len(), 0); |         assert_eq!(transactions.len(), 0); | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user