Use leader_forward_count for tx retries too (#14547)
This commit is contained in:
parent
673cb39975
commit
e1b59ded4b
|
@ -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!(
|
||||||
|
|
Loading…
Reference in New Issue