Incident log timeline explorer
Trace an interleaved gateway, checkout and ledger log stream. Separate the first timeout symptom from the underlying lock wait and non-idempotent retry.
Free to use · No sign-up · Inputs stay in your browser
Compare the timeout budget against the downstream lock
Adjust the gateway timeout, ledger lock duration and retry policy. Identify both the first observable symptom and the root-cause line.
- Client HTTP status
- 200
- Committed ledger writes
- 2
Interleaved service timeline
Silent duplicate charge (200 OK, 2 ledger writes)
Line 3 records the root-cause budget mismatch (650ms lock wait vs 400ms gateway timeout), and Line 4 is the first observable timeout symptom. Because attempt 1 is still running in the ledger when attempt 2 starts without an idempotency key, both writes commit.
POST /checkout attempt=1 timeout=400ms idem=none
forwarding charge attempt=1 to ledger (idem=none)
waiting on row lock; commit will take 650ms (> gateway 400ms budget)
upstream timeout after 400ms on attempt=1; client socket still open
retrying POST /checkout attempt=2 idem=none
forwarding charge attempt=2 to ledger (idem=none, new transaction)
committed charge tx_102 amount=4900 from attempt=2 (2nd duplicate ledger write)
200 OK returned to client (attempt=2 succeeded, but ledger charged twice)
committed charge tx_101 amount=4900 from attempt=1 (1st ledger write)
Practice separating symptoms from root causes
In a log stream, the gateway logs a 504 timeout at 400ms and the database logs a slow commit at 665ms. Why is raising the retry count without an idempotency key dangerous?
Check the reasoning
A caller timeout cancels the wait on the client side, not necessarily the in-flight work on the downstream database. Retrying a non-idempotent write while the first attempt is still holding locks or committing can duplicate the side effect.
This is an original open example, not a scored drill. Close the tool before taking a diagnostic or an unassisted practice session.
About 14 minutes, no account needed. A free account adds a daily practice queue; paid plans add more practice and the full library.
How to use the result
Select the gateway timeout budget, downstream ledger commit duration and retry policy. Inspect how the interleaved timestamps shift and compare the HTTP status seen by the caller against the number of committed writes.
When the gateway times out at 400ms while the ledger write takes 650ms, the timeout warning at 400ms is the first caller-visible symptom, not the root cause. Retrying immediately without an idempotency key starts a second transaction while the first is still committing, producing two ledger writes.
These utilities and open examples do not contribute to your diagnostic score or practice history.
RFC 9110: HTTP idempotent methods and retry safety