{
  "slug": "retry-deduplication",
  "term": "Retry deduplication",
  "aliases": [
    "Duplicate request suppression"
  ],
  "definition": "Retry deduplication recognizes repeated submissions of one logical request so that an already completed mutation is not executed again.",
  "note": "RIFL couples request identity with durable completion records and defines migration and reclamation rules. This is distinct from data deduplication. A new request identity or lost recovery state can defeat a duplicate check.",
  "related": [
    "io-timeout",
    "io-fencing",
    "fencing-token"
  ],
  "citations": [
    {
      "id": "rifl",
      "title": "Collin Lee, Seo Jin Park, Ankita Kejriwal, Satoshi Matsushita and John Ousterhout. Implementing Linearizability at Large Scale and Low Latency. SOSP 2015; DOI 10.1145/2815400.2815416; sections 2-4, 7 and 9.",
      "url": "https://web.stanford.edu/~ouster/cgi-bin/papers/rifl.pdf",
      "accessed": "2026-10-11"
    },
    {
      "id": "hesela-timeouts",
      "title": "Storage timeouts: an expired timer is not a cancelled write",
      "url": "https://hesela.com/analyses/storage-timeouts-uncertain-completion/",
      "accessed": "2026-10-11"
    }
  ],
  "status": "shipping",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-10-11"
}
