v1.18: RPC sendTransaction: be more liberal in determining and setting last_valid_block_height for skip_preflight case (backport of #483) #873
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Transactions submitted to RPC
sendTransaction
withskipPreflight: true
frequently aren't retried by the SendTransactionService (STS). This happens when the transaction's recent blockhash is newer than the RPC node's finalized bank, because unlesspreflightCommitment
is speficied, the RPC handler uses the default finalized bank to find alast_valid_block_height
to provide to the STS. If the blockhash cannot be found (as when too new),last_valid_block_height
is set to0
, and the STS only broadcasts the transaction once.Summary of Changes
skip_preflight
is set, use theprocessed
commitment Bank to search for the recent blockhash.last_valid_block_height
still cannot be determined, use the durable-nonce logic to retry the transaction for an arbitrary, fixed number of blocks (skip_preflight
being an indication that a client wants their transactions to be sprayed around regardless of likelihood of success).Fixes #479
This is an automatic backport of pull request #483 done by [Mergify](https://mergify.com).