Reference
Amazon Builders' Library: Timeouts, retries, and backoff with jitter
Amazon's account of how to pick timeouts, why retries need exponential backoff with jitter and a cap, and why only idempotent operations are safe to retry.
Engineering Fundamentals for the Agent Era
Retries without idempotency that charge a customer twice when the first attempt had actually succeeded.
Missing timeouts, so one slow dependency ties up every request that touches it.
Immediate retries without backoff or jitter that turn a brief outage into a retry storm.
Events ordered by wall-clock timestamps taken on different machines.
When work spans machines, any step can fail, stall or happen twice, and the design has to assume it will.
An agent wrote a checkout endpoint that retries the payment call on timeout, up to five times, with no delay between attempts. Find the path that charges the customer twice and what the retries do to the payment provider during an outage, then write the test that proves the double charge.
Reference
Amazon's account of how to pick timeouts, why retries need exponential backoff with jitter and a cap, and why only idempotent operations are safe to retry.
AWS's distinguished engineer on retries, backoff, circuit breakers and retry budgets, and on how naive retries amplify load during an outage.
Shows why a sender can never be certain its message was acted on over an unreliable network, the root of the timeout-then-double-charge problem and of why exactly-once delivery is impossible.
Explains clock skew, NTP corrections and monotonic versus wall-clock time, and why timestamps from different machines cannot order events.
Its chapter on the trouble with distributed systems covers unreliable networks, timeouts, unreliable clocks and process pauses, followed by consistency, consensus and exactly-once semantics.
A practitioner's short guide to timeouts, retries with backoff, idempotency, the outbox pattern, leader election and replication, written for application developers.
Catalogs production failure modes such as missing timeouts, cascading failures and self-inflicted retry storms, and the stability patterns that stop them: timeouts, circuit breakers and bulkheads.
Specification
The payment API's own contract for idempotency keys: the server stores the first result for a key and returns it on a retry, so a retry after a timeout never charges twice.