Выбор ответа Senior Транзакции и блокировки обновлено
Взаимоблокировка
Вопрос
Два документа одновременно проводятся по старой методике: каждый ставит разделяемую блокировку на остатки товара, читает, а затем пишет движения (нужна исключительная). Что произойдёт?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Взаимоблокировка: оба ждут друг друга, одна транзакция отменится. Разделяемые блокировки совместимы, оба читают.
Варианты ответа
- Оба документа проведутся, а второй просто перезапишет движения первого документа
- Второй документ сразу получит ошибку прав на запись остатков
- Взаимоблокировка: оба ждут друг друга, одна транзакция отменитсяправильный ответ
- Ничего: разделяемые блокировки совместимы и с записью
Разбор
Разделяемые блокировки совместимы, оба читают. Потом оба хотят исключительную на те же данные и ждут друг друга. Платформа обнаруживает взаимоблокировку и отменяет одну транзакцию. Решение: сразу ставить исключительную блокировку на то, что будет изменяться, и брать блокировки в одном порядке. Перезаписи движений чужого документа не бывает, это не ошибка прав.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.