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 ongoing TransactWriteItems 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 the TransactWriteItems operation.

  • Set socketTimeout to a value a little lower than the requestTimeout 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 and TransactionInProgressException 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 ongoing TransactWriteItems 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 the TransactWriteItems operation.

    • Set socketTimeout to a value a little lower than the requestTimeout 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 and TransactionInProgressException 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.