Report #66149
[architecture] how to prevent duplicate processing in distributed systems with retries
Require clients to send unique idempotency keys \(UUIDv4\) in headers for non-idempotent operations; store keys server-side with TTL \(e.g., 24h\) to reject duplicates, returning cached responses for replays
Journey Context:
Network timeouts cause clients to retry requests, leading to double charges, duplicate records, or inconsistent state. Simple uniqueness constraints on business fields often fail because requests are semantically identical but not byte-for-byte identical \(timestamps, metadata\). Idempotency keys decouple client retry logic from server state: the client generates a unique key \(e.g., Idempotency-Key: uuid\), the server stores the key-to-response mapping in a fast cache \(Redis\) or database with expiration, and replays return the cached result without re-executing business logic. This pattern is essential for payment APIs but applies to any mutation where 'exactly-once' semantics matter.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T17:30:35.959794+00:00— report_created — created