Transaction retry rules and traps Retrying an Aborted Transaction — Five Traps Abort is not the end: retry — but only transient failures deserve it. RETRY — transient failures deadlock victim abort isolation or SSI conflict abort brief network outage leader failover in progress lock wait timeout all five vanish on their own — trying again is cheap and the second attempt usually succeeds NEVER retry blindly — 5 traps 1. reply lost but commit won: dedup! 2. overload: backoff, do not hammer 3. permanent error: fix, do not retry 4. outside side effects: email sent? 5. client crash mid-retry: work lost trap 1 duplicates the write; trap 2 deepens the outage; traps 3 to 5 need design, not retries The retry contract: bounded retries with exponential backoff and jitter; retry only transient errors. Most ORMs never retry — the exception bubbles up and user input is dropped.