| Предыдущий | Следующий |
| FSRM_E_AUTO_QUOTA | XACT_S_DEFECT |
XACT_S_ASYNC
Что означает этот результат
XACT_S_ASYNC (0x0004D000) — информационный или успешный статус из области MSDTC / COM+ transactions. Короткий ориентир по имени: асинхронное завершение. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: Transaction operation started asynchronously
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Граница контракта
Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.
Для этого кода особенно полезно различать два признака из исходной документации: Transaction operation started asynchronously
и Track the asynchronous completion mechanism, cancellation policy, and final outcome. Never report commit or abort merely because the request was accepted.
. Они задают более узкую границу, чем название facility.
Данные для диагностики
- идентификатор UOW и первый API, вернувший код
- фаза prepare/commit/abort/recovery и текущий владелец перехода
- голоса и состояние resource managers, включая первый отказ
- тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
- Сопоставьте trace с исходным признаком:
An application submits an asynchronous commit, persists the transaction identifier, and updates business state only after the coordinator reports the final decision.
- Сопоставьте trace с исходным признаком:
In the COM transaction and MSDTC protocol, this result means that an asynchronous operation was specified; The operation has begun, but its outcome is not known yet. Treat it as a distinct branch whose postcondition must be proven before subsequent operations begin.
- Сопоставьте trace с исходным признаком:
Inspect the current generation of every affected object before deciding what happens next.
Порядок проверки
- Проверьте именно границу «асинхронное завершение» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
this result is HRESULT 315392 ( 0x0004D000 ) from winerror.h.
.
Исправление и контроль
Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.
Регрессионная проверка должна отдельно контролировать условие Exact handling of it matters because a generic success path cannot express its required next action.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft: COM transaction status codes
- Microsoft: ITransaction::Commit
- Microsoft: ITransaction::Abort
- Microsoft: HRESULT values
Нужно найти другой код? Найти другой код состояния или ошибки.