Report #6450
[architecture] Implementing idempotency when downstream services do not support idempotency keys
Maintain a local idempotency store \(e.g., Redis or RDBMS with TTL\) to track request fingerprints and state transitions \(pending/success/failed\) before calling external services, ensuring you never issue the downstream call twice for the same logical operation.
Journey Context:
Developers often assume idempotency requires only passing a key to an external API, but when downstream lacks support, you must enforce it at your boundary. Common failures include: \(1\) storing keys indefinitely causing storage explosion, \(2\) not handling the 'in-flight' state where a request is sent but response is lost, leading to premature retries that violate at-least-once semantics, and \(3\) ignoring zombie requests where a slow original response arrives after a retry succeeded. The fix requires a state machine with TTLs based on business SLA, not just a cache.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T00:10:20.065199+00:00— report_created — created