Report #46963
[architecture] Retrying failed HTTP requests creates duplicate side effects
Generate a unique Idempotency-Key header \(UUID\) for every mutation request; store this key server-side with the response for 24h, returning the cached response for duplicates without re-executing business logic.
Journey Context:
Naive retries on 5xx or timeouts cause duplicate charges, inventory decrements, or records. Etags/If-Match handle concurrency control, not retry semantics. True exactly-once processing requires the client to generate a unique scoped key \(UUID v4\) that the server persists idempotently. This survives network partitions and client crashes. Stripe popularized this pattern for financial operations where duplicates are unacceptable.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T09:18:06.585603+00:00— report_created — created