DBAtlas · Атлас эксплуатации баз данных

225 TransactionTooOld: TransactionTooOld

MongoDB

Что это значит?

Команда выполнена внутри многодокументной транзакции, но её номер транзакции старше последнего номера транзакции, который сервер видел для этого сеанса. Иначе говоря, начата более новая транзакция, поэтому эта старая больше недействительна.

Почему возникает?

В том же сеансе начата новая транзакция до завершения старой, либо номера транзакций сдвинулись не по порядку из-за параллелизма. Обычно происходит, когда объект сеанса неправильно используется совместно или несколько потоков используют один сеанс.

Как исправить

Правильно управляйте жизненным циклом сеанса для каждой логической транзакции; не используйте один сеанс параллельно в нескольких потоках. Выполняйте транзакции через рекомендуемый драйвером API withTransaction/callback (он обрабатывает повторы и управление номерами). Завершайте предыдущую транзакцию через commit/abort перед началом новой.

Открыть в DBAtlas →

Ещё по этой СУБД