Retry on certain query failures for managed transactions #190
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.
When using
Graph::run
,Graph::run_on
,Graph::execute
, orGraph::execute_on
, the query might be retries for a while.The logic is that all errors with the
Transient
error class as well as a few other error classes are considered retryable.This catches errors during a leader election or when the transaction resources on the server (memory, handles, ...) are exhausted.
Retries happen with an exponential backoff until a retry delay exceeds 60s, at which point the query fails.
Transaction created with
Graph::start_txn
orGraph::start_txn
are not retried automatically, only managed transactions are.Cherry-Picked-From: #186