| Предыдущий | Следующий |
| XACT_S_OKINFORM | XACT_S_MADECHANGESINFORM |
XACT_S_MADECHANGESCONTENT
Практический смысл
XACT_S_MADECHANGESCONTENT (0x0004D005) — информационный или успешный статус из области MSDTC / COM+ transactions. Короткий ориентир по имени: изменено содержимое. Для диагностики важнее определить первый API и состояние объекта в момент возврата, чем переводить символическое имя как общее сообщение.
Исходное условие в техническом описании сформулировано так: Transaction sink made changes and is content
. Эту формулировку следует сопоставлять с фактическим параметром, handle, файлом или state transition в trace.
Что именно нужно отделить
Проверяйте состояние самой транзакции отдельно от причины, которая привела её к этому состоянию. Для распределённого commit важны UOW, фаза протокола, голоса участников, ownership операции и терминальный outcome.
Для этого кода особенно полезно различать два признака из исходной документации: Transaction sink made changes and is content
и A normalization sink updates one enlisted resource and returns content. The coordinator proceeds without recalling that sink, while audit logs retain the exact modification.
. Они задают более узкую границу, чем название facility.
Что сохранить до изменений
- идентификатор UOW и первый API, вернувший код
- фаза prepare/commit/abort/recovery и текущий владелец перехода
- голоса и состояние resource managers, включая первый отказ
- тайм-аут, DTC trace и внешние побочные эффекты вне транзакции
- Сопоставьте trace с исходным признаком:
Verify that the sink’s changes are included and it does not require another review pass. The verification prevents it from being promoted to broader success than the producing API promised.
- Сопоставьте trace с исходным признаком:
In the COM transaction and MSDTC protocol, this result means that the sink is content and wishes the transaction to proceed; Changes were made to one or more resources during this call. The high-level request can be considered complete after it only when its documented postcondition has been checked.
- Сопоставьте trace с исходным признаком:
Record the modified resources and proceed with the protocol. Revalidation is needed only if the transaction contract or another failure invalidates those changes.
Как проверить причину
- Проверьте именно границу «изменено содержимое» и зафиксируйте объект, аргумент или состояние, которое её подтверждает.
- Сверьте наблюдаемое состояние с отдельным исходным признаком:
The nearby-status comparison controls whether outputs are usable and whether more work is expected.
.
Безопасное восстановление
Исправляйте конкретную фазу или ownership. Не повторяйте commit/abort на старом объекте вслепую и не создавайте новую бизнес-попытку, пока не понятен исход предыдущей транзакции.
Регрессионная проверка должна отдельно контролировать условие this result is HRESULT 315397 ( 0x0004D005 ) from winerror.h.
. Положительный тест обязан проходить после узкого исправления, а отрицательный — по-прежнему воспроизводить ожидаемый отказ на заведомо неверном состоянии.
Технические ссылки
- Microsoft: COM transaction status codes
- Microsoft: ITransaction::Commit
- Microsoft: ITransaction::Abort
- Microsoft: HRESULT values
Нужно найти другой код? Найти другой код состояния или ошибки.