| Предыдущий | Следующий |
| ERROR_TRANSACTION_ALREADY_ABORTED | ERROR_TM_INITIALIZATION_FAILED |
ERROR_TRANSACTION_ALREADY_COMMITTED
Этот результат означает, что транзакция уже имеет результат committed, поэтому KTM не примет дополнительную операцию, изменяющую состояние протокола. Обычно это признак дублированной работы завершения, позднего асинхронного обратного вызова или кода приложения, сохранившего дескриптор транзакции после успешного запроса фиксации.
Почему повтор опасен
Повторение побочного эффекта только из-за сбоя этого вызова может продублировать работу вне области KTM. Сначала установите, была ли зафиксирована связанная с транзакцией бизнес-операция и завершили ли все диспетчеры ресурсов собственную обработку результата. Сам статус не даёт оснований считать транзакцию неуспешной.
Полезные проверки
- Запишите идентификатор транзакции и исходный запрос фиксации.
- Проверьте, что обратный вызов завершения диспетчеризуется один раз на enlistment и уведомление.
- Отделите окончательный результат транзакции от прикладных задач после фиксации, которым нужна собственная политика повторов.
- Закрывайте или освобождайте дескрипторы транзакции после завершения владеющего ими процесса.
См. жизненный цикл транзакции KTM и функции фиксации и завершения KTM.
Нужно найти другой код? Найти другой код состояния или ошибки.