The Engineer's Journal
Post-Mortem

Post-Mortem: The Retry Storm That Looked Like a Capacity Problem

A failure analysis of a dependency outage where well-intended retry logic amplified load and delayed recovery.

softwareinfrastructure
Reading progress saved on this device0%

What Happened

A downstream service began timing out after a deploy increased database query latency. Upstream callers retried failed requests three times with identical timing. The dependency recovered briefly, then collapsed under synchronized retry traffic.

Root Cause

The incident was not caused by retries alone. It was caused by retries without a budget, without jitter, and without a system-level understanding of how many clients would retry at the same time.

What Went Right

The team had dependency-level metrics, so the overload pattern became visible after the first investigation pass.

What Changed

Retries now have deadlines, jitter, and bounded budgets. The calling service sheds noncritical work when dependency latency crosses a threshold.

Lesson

A reliability mechanism can become a failure mechanism when its second-order effects are ignored.