Predicate invariant требует свежей transaction
Disjoint row locks не защищают решение по нескольким rows. SERIALIZABLE может abort execution без serial order; retry заново выполняет все reads/writes с тем же command id и точным total-attempt budget.
distributed systems / УРОВЕНЬ 5
ТЕОРИЯ / ВОСПРОИЗВЕДЕНИЕ
Disjoint row locks не защищают решение по нескольким rows. SERIALIZABLE может abort execution без serial order; retry заново выполняет все reads/writes с тем же command id и точным total-attempt budget.
КОНТРОЛЬНАЯ ТОЧКА
02 / ОТЛАДКА
Исправьте `run_serializable`: `max_attempts` — total invocations; тот же command id; retry только SerializationFailure/DeadlockDetected при budget; success/permanent/final retryable возвращаются сразу.
Runner ждёт отправки кода.