Report #96313
[architecture] Exactly once message processing duplicate webhooks API retries
Clients generate a unique Idempotency-Key header \(UUIDv4\) for each logical request; server stores key in a TTL-backed deduplication store \(Redis with EXPIRE or RDBMS with partitioned cleanup\) and returns 409 Conflict or cached response for duplicates
Journey Context:
Distributed systems guarantee at-least-once delivery, not exactly-once. Simple database unique constraints on idempotency keys work but grow unbounded without TTL, causing storage exhaustion and lookup latency degradation. Stripe popularized client-generated keys over server-generated tokens to allow safe retries without response buffering.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T20:14:43.464860+00:00— report_created — created