Два процесса одновременно изменили одну запись
«Запись с идентификатором ... была изменена в другой транзакции» в логах Directum RX: два пользователя или процесса сохранили одну и ту же запись почти одновременно. Когда это нормально и когда стоит искать конфликтующий фоновый процесс.
Что это значит
RX защищает записи от потери изменений: если запись прочитали, а пока её редактировали, кто-то другой успел её сохранить, второе сохранение отклоняется с этой ошибкой. Пользователь видит сообщение и должен обновить карточку и повторить действие.
Между людьми это бывает редко. Чаще конфликтуют фоновые процессы и обработчики: например, схема задачи и асинхронный обработчик одновременно меняют один документ.
Как проверить
- Кто участвовал: в записи журнала смотреть сервис, логгер и пользователя. Если с обеих сторон фоновые сервисы, это конфликт обработчиков.
- Повторяется ли конфликт на одной и той же записи или типе: тогда это особенность прикладной логики.
- Чем закончилось: обработчик повторил операцию или задача встала.
Что сделать
- Единичные конфликты пользователей считать нормой.
- Повторяющиеся конфликты фоновых процессов передать разработчикам прикладной логики с примерами: часто помогает разнести обработку во времени или повторять операцию при конфликте.
- Если из-за конфликта остановилась задача, перезапустить её или выполнить действие повторно.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать