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.