Theme 1 – Bound retry amplification (budgets, token buckets, “no‑retry” signals)
Many commenters argued that the key to preventing retry storms is to limit how much extra load retries can add, either locally or via propagated hints.
- “Your service that retries should have some retry budget… only allowing 20% more requests per second as retries, total.” – CBLT
- “Whenever a service retries but has to give up, the error it sends to its callers should never be retried… prevents the multiplicative factor of retry on top of retry.” – CBLT (echoed by jeffbee and otterley)
- “Just limiting your retry budget to 1% of normal rates using a client‑local token bucket … will eliminate the possibility of long‑lived retry storms.” – jeffbee
Theme 2 – Exponential backoff/jitter is a starting point, not a complete solution
Participants agreed that basic backoff helps but must be combined with smarter signals (circuit breakers, load shedding, error budgets, status headers).
- “Exponential back off and jitter are the first things to work on, and good if you don’t have a better signal… also, a simple signal status server or queue system helps… ” – sroussey
- “Just throwing exponential backoffs at the retry problem is not a magic solution.” – anonymars
- “Combine that with exp backoff in the caller and you got yourself a pretty robust starting point” – maxchisto (referring to load shedding)
Theme 3 – Nuance matters: avoid one‑size‑fits‑all policies; weigh developer vs. user experience
Several users warned against blanket rules (e.g., “never retry” or “always retry”) and stressed context‑aware handling.
- “This is trading a good developer experience for a bad user experience… Lack of considering nuance for your situation is just intellectual laziness.” – applfanboysbgon
- “The described situation is an awful user experience… Simply adding a retry and calling it a day sounds like the easy developer experience at the expense of the user experience.” – anonymars
- “You should absolutely consider the impact and what will happen when they go wrong, but the end takeaway to just never engage with them … is … lazy and bad advice.” – applfanboysbgon (responding to the “never retry” stance)