Report #61052
[architecture] Retry storms overwhelming downstream services during partial outages
Implement exponential backoff with full jitter: sleep = random\(0, min\(cap, base \* 2^attempt\)\); use base=100ms, cap=60s, max 3-5 retries; combine with circuit breakers that open after 5 consecutive errors, staying open for 30s before half-open test
Journey Context:
Naive immediate retries or fixed-interval retries synchronize across clients, creating thundering herds that amplify outages. Exponential backoff spreads out retry attempts, but synchronized clocks still cause clustering. Full jitter \(random value between 0 and computed delay\) breaks synchronization entirely. AWS SDKs use decorrelated jitter \(sleep = min\(cap, random\(base, sleep\*3\)\)\) as alternative. Common mistake: not capping delay \(leading to hours of wait\) or retrying indefinitely on non-idempotent endpoints. Tradeoff: latency recovery vs load protection; circuit breakers prevent waste when downstream is clearly down.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T08:57:46.078300+00:00— report_created — created