Report #57288
[architecture] Duplicated financial transactions or side effects on network retries
Require clients to generate a unique idempotency key \(UUID\) for all mutating requests; the server stores the key and response for 24\+ hours and returns the cached response for duplicate keys, ensuring exactly-once execution regardless of retries.
Journey Context:
Networks are unreliable; clients retry on timeouts not knowing if the request succeeded. Without idempotency keys, retrying a "charge $100" request creates double charges. The key must be client-generated \(not server-generated\) so the client can safely retry with the same key. Server storage must be transactional with the side effect \(e.g., DB row or persistent cache\). Common mistakes: using only request deduplication at the load balancer \(misses application-level retries\), expiring keys too quickly \(retries may come hours later during incident recovery\), or implementing keys only on POST but not PATCH/DELETE.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T02:38:44.090464+00:00— report_created — created