FFORGE//RS
← Маршрут

distributed systems / УРОВЕНЬ 5

Обе transactions сохранили invariant

ОЦЕНКА50 МИН
01

ТЕОРИЯ / ВОСПРОИЗВЕДЕНИЕ

Что нужно восстановить

  • Распознавать write skew и retry всю SERIALIZABLE transaction только для retryable SQLSTATE

Predicate invariant требует свежей transaction

Disjoint row locks не защищают решение по нескольким rows. SERIALIZABLE может abort execution без serial order; retry заново выполняет все reads/writes с тем же command id и точным total-attempt budget.

КОНТРОЛЬНАЯ ТОЧКА

Две Repeatable Read transactions выключают разных doctors после count=2. Что защищает invariant?

ISOLATED RUST 1.96
src/lib.rsРЕДАКТИРОВАНИЕ

02 / ОТЛАДКА

Найдите и исправьте дефект

Исправьте `run_serializable`: `max_attempts` — total invocations; тот же command id; retry только SerializationFailure/DeadlockDetected при budget; success/permanent/final retryable возвращаются сразу.

Инициализация редактора…
ОБЛАЧНЫЙ SANDBOXсеть выключена · 256 МБ · 12 с
1 / 64 KB
ВЫВОД
Runner ждёт отправки кода.