{
  "schema": "vedokrok.public-item.v1",
  "release_id": "MHC-RPUB-20260920-75ad787a",
  "url": "/knowledge/retry-slower-with-randomness-and-stop",
  "id": "MHC-D-RESEARCH-0348",
  "version": "0.1.0",
  "title": "Retry slower, with randomness, and stop",
  "summary": "A retry storm is an outage trying to help.",
  "kind": "protocol",
  "body": "Use a bounded retry policy: wait longer between attempts, add jitter so clients do not synchronize, and stop after a defined budget. Combine this with timeouts and idempotency for mutating operations. Retry only errors that can plausibly recover; validation failures and permanent authorization errors need a different response.",
  "limits": [
    "Backoff reduces amplification but may increase completion latency; tune it to the service and user-facing deadline."
  ],
  "topics": [
    "union-safe-change-operations"
  ],
  "intents": [],
  "source_ids": [
    "RS-3C71607C882BB63A"
  ],
  "evidence": [
    {
      "claim": "AWS reliability guidance recommends limiting retries and using exponential backoff with jitter rather than retrying immediately and indefinitely.",
      "source_id": "RS-3C71607C882BB63A",
      "role": "supports",
      "note": "Retries are appropriate mainly for transient failures and can worsen overload when used without budgets, timeouts and idempotency.",
      "locator": "Implementation guidance"
    }
  ],
  "use_when": [
    "A remote dependency fails transiently and many clients may retry at the same time."
  ],
  "avoid_when": [
    "Backoff reduces amplification but may increase completion latency; tune it to the service and user-facing deadline."
  ],
  "example": "A worker retries a throttled API after randomized exponential delays instead of immediately looping hundreds of requests.",
  "check": "The retry policy cannot continue indefinitely or synchronize a fleet into repeated load spikes.",
  "steps": [
    "The retry policy cannot continue indefinitely or synchronize a fleet into repeated load spikes."
  ],
  "sources": [
    {
      "id": "RS-3C71607C882BB63A",
      "title": "REL05-BP03 Control and limit retry calls",
      "url": "https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_mitigate_interaction_failure_limit_retries.html"
    }
  ],
  "relations": [
    {
      "from": "MHC-D-RESEARCH-0348",
      "to": "MHC-D-RESEARCH-0347",
      "type": "useful_with",
      "url": "/knowledge/give-a-retryable-mutation-one-stable-operation-id"
    }
  ],
  "collections": [
    {
      "id": "RC-4F77BDBBF2481574",
      "title": "Change live systems without turning one mistake into a large one",
      "url": "/collections/change-live-systems-without-turning-one-mistake-into-a-large-one"
    }
  ]
}
