SoloMedium8m
The Frozen Checkout
PagerDuty — checkout-api frozen (504s)
Impact: ALL checkouts failing 23+ minutes. DB CPU 2% — not load. Two transactions waiting on each other — classic deadlock.
The trap: Txn A locks products then sessions. Txn B locks sessions then products. Circular wait → frozen checkout.
Your task
Fix `process_checkout()` in `checkout_service.py`: consistent lock order (checkout_sessions → products), 5s timeout, one retry.
Book: ACID prevents races · Prod: inconsistent lock order deadlocks under concurrency.
Skills you'll prove
pythonconcurrencydeadlockdatabasetransactionsbook-vs-prod