| Предыдущий | Следующий |
| XACT_E_CLERKEXISTS | XACT_E_TRANSACTIONCLOSED |
XACT_E_RECOVERYINPROGRESS
Интерпретация HRESULT
XACT_E_RECOVERYINPROGRESS (0x8004D082) — код ошибки из области MSDTC / COM+ transactions. Короткий ориентир по имени: идёт восстановление. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: A TXF or CRM recovery operation is already in progress.
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Контракт операции
Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.
Для этого кода особенно полезно различать два признака из исходной документации: A TXF or CRM recovery operation is already in progress.
и Automation interprets delayed completion as failure and launches a duplicate recovery worker.
. Они задают более узкую границу, чем название facility.
Наблюдаемые признаки
- идентификатор UOW и первый API, вернувший код
- фаза prepare/commit/abort/recovery и текущий владелец перехода
- голоса и состояние resource managers, включая первый отказ
- тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
- Сопоставьте trace с исходным признаком:
Record service restarts, failovers, and administrative actions that could have launched parallel passes.
- Сопоставьте trace с исходным признаком:
Service startup and an administrative repair command overlap on the same log or clerk set.
- Сопоставьте trace с исходным признаком:
A cluster failover launches CRM recovery on the new owner. A health script times out and launches the same repair command, which receives this HRESULT. The duplicate command is removed, and monitoring waits for the original pass to resolve its in-doubt transaction.
Разбор по шагам
- Проверьте именно границу «идёт восстановление» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
Use supported monitoring interfaces to inspect clerks and records without taking ownership.
.
Повтор и восстановление
Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.
Регрессионная проверка должна отдельно контролировать условие Confirm whether the active recovery worker is making progress or waiting for a known participant.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft: COM transaction error codes
- Microsoft: HRESULT values in MS-ERREF
- Microsoft: COM+ Compensating Resource Manager
- Microsoft: COM+ interfaces in comsvcs.h
- Microsoft: enable MSDTC diagnostic tracing
Нужно найти другой код? Найти другой код состояния или ошибки.
