DynamoDB / Client / exceptions / TransactionInProgressException
TransactionInProgressException#
- class DynamoDB.Client.exceptions.TransactionInProgressException#
The transaction with the given request token is already in progress.
Recommended Settings
Note
This is a general recommendation for handling the
TransactionInProgressException
. These settings help ensure that the client retries will trigger completion of the ongoingTransactWriteItems
request.Set
clientExecutionTimeout
to a value that allows at least one retry to be processed after 5 seconds have elapsed since the first attempt for theTransactWriteItems
operation.Set
socketTimeout
to a value a little lower than therequestTimeout
setting.requestTimeout
should be set based on the time taken for the individual retries of a single HTTP request for your use case, but setting it to 1 second or higher should work well to reduce chances of retries andTransactionInProgressException
errors.Use exponential backoff when retrying and tune backoff if needed.
Assuming default retry policy, example timeout settings based on the guidelines above are as follows:
Example timeline:
0-1000 first attempt
1000-1500 first sleep/delay (default retry policy uses 500 ms as base delay for 4xx errors)
1500-2500 second attempt
2500-3500 second sleep/delay (500 * 2, exponential backoff)
3500-4500 third attempt
4500-6500 third sleep/delay (500 * 2^2)
6500-7500 fourth attempt (this can trigger inline recovery since 5 seconds have elapsed since the first attempt reached TC)
Example
try: ... except client.exceptions.TransactionInProgressException as e: print(e.response)
- response#
The parsed error response. All exceptions have a top level
Error
key that provides normalized access to common exception atrributes. All other keys are specific to this service or exception class.Syntax
{ 'Message': 'string', 'Error': { 'Code': 'string', 'Message': 'string' } }
Structure
(dict) –
The transaction with the given request token is already in progress.
Recommended Settings
Note
This is a general recommendation for handling the
TransactionInProgressException
. These settings help ensure that the client retries will trigger completion of the ongoingTransactWriteItems
request.Set
clientExecutionTimeout
to a value that allows at least one retry to be processed after 5 seconds have elapsed since the first attempt for theTransactWriteItems
operation.Set
socketTimeout
to a value a little lower than therequestTimeout
setting.requestTimeout
should be set based on the time taken for the individual retries of a single HTTP request for your use case, but setting it to 1 second or higher should work well to reduce chances of retries andTransactionInProgressException
errors.Use exponential backoff when retrying and tune backoff if needed.
Assuming default retry policy, example timeout settings based on the guidelines above are as follows:
Example timeline:
0-1000 first attempt
1000-1500 first sleep/delay (default retry policy uses 500 ms as base delay for 4xx errors)
1500-2500 second attempt
2500-3500 second sleep/delay (500 * 2, exponential backoff)
3500-4500 third attempt
4500-6500 third sleep/delay (500 * 2^2)
6500-7500 fourth attempt (this can trigger inline recovery since 5 seconds have elapsed since the first attempt reached TC)
Message (string) –
Error (dict) – Normalized access to common exception attributes.
Code (string) – An identifier specifying the exception type.
Message (string) – A descriptive message explaining why the exception occured.