From 86eb0157c0d6f45bd8751857eb999202008cabce Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Tue, 27 Oct 2020 18:35:43 +0000 Subject: [PATCH] Account for forward delay in transaction simulation (#13199) (#13201) (cherry picked from commit 631f029fe9195c9a73fc152f1f4d29c0cce2dc64) Co-authored-by: Justin Starry --- runtime/src/bank.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index 392c0af349..f584d11cbd 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -39,7 +39,8 @@ use solana_sdk::{ account::Account, clock::{ Epoch, Slot, SlotCount, SlotIndex, UnixTimestamp, DEFAULT_TICKS_PER_SECOND, - MAX_PROCESSING_AGE, MAX_RECENT_BLOCKHASHES, SECONDS_PER_DAY, + MAX_PROCESSING_AGE, MAX_RECENT_BLOCKHASHES, MAX_TRANSACTION_FORWARDING_DELAY, + SECONDS_PER_DAY, }, epoch_info::EpochInfo, epoch_schedule::EpochSchedule, @@ -1888,7 +1889,15 @@ impl Bank { _retryable_transactions, _transaction_count, _signature_count, - ) = self.load_and_execute_transactions(&batch, MAX_PROCESSING_AGE, false, true); + ) = self.load_and_execute_transactions( + &batch, + // After simulation, transactions will need to be forwarded to the leader + // for processing. During forwarding, the transaction could expire if the + // delay is not accounted for. + MAX_PROCESSING_AGE - MAX_TRANSACTION_FORWARDING_DELAY, + false, + true, + ); let transaction_result = executed[0].0.clone().map(|_| ()); let log_messages = transaction_logs