Выбор ответа Senior Транзакции и блокировки обновлено

Взаимоблокировка

Вопрос

Два документа одновременно проводятся по старой методике: каждый ставит разделяемую блокировку на остатки товара, читает, а затем пишет движения (нужна исключительная). Что произойдёт?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Взаимоблокировка: оба ждут друг друга, одна транзакция отменится. Разделяемые блокировки совместимы, оба читают.

Варианты ответа

  1. Оба документа проведутся, а второй просто перезапишет движения первого документа
  2. Второй документ сразу получит ошибку прав на запись остатков
  3. Взаимоблокировка: оба ждут друг друга, одна транзакция отменитсяправильный ответ
  4. Ничего: разделяемые блокировки совместимы и с записью

Разбор

Разделяемые блокировки совместимы, оба читают. Потом оба хотят исключительную на те же данные и ждут друг друга. Платформа обнаруживает взаимоблокировку и отменяет одну транзакцию. Решение: сразу ставить исключительную блокировку на то, что будет изменяться, и брать блокировки в одном порядке. Перезаписи движений чужого документа не бывает, это не ошибка прав.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме