A developer calls Amazon DynamoDB from application code using the AWS SDK and sometimes receives a ProvisionedThroughputExceededException during traffic spikes. The developer wants the application to recover from these transient throttling errors automatically while spreading retries to avoid a synchronised retry storm across many clients. Which approach should the developer use?
- ACatch the exception and immediately resend the same request in a tight loop until DynamoDB finally accepts the write or read.
- BCatch the exception and retry after a fixed one second delay each time so every client waits the same interval before trying again.
- CRely on the SDK retry behaviour using exponential backoff with jitter, raising the max attempts if the default retries are exhausted. Correct
- DProvision the table for the highest expected peak capacity permanently so throttling errors never occur and no retry logic is needed.
Why A is wrong: An immediate tight retry loop hammers the table during throttling and offers no backoff, so many clients retry in lockstep and the throttling worsens rather than clearing.
Why B is wrong: A fixed delay still synchronises retries across clients into the same instants, so it forms a retry storm and lacks the growing wait that backoff provides.
Why C is correct: The AWS SDK retries throttling errors with exponential backoff and added jitter by default, which spaces and desynchronises retries so transient throttling clears without a storm.
Why D is wrong: Permanently over-provisioning wastes capacity, raises cost, and still cannot guarantee zero throttling during unexpected spikes, so the client must handle the error regardless.