| Previous | Next |
| XACT_E_COMMITFAILED | XACT_E_HEURISTICABORT |
XACT_E_COMMITPREVENTED
Transaction propagation does not transfer commit authority automatically
XACT_E_COMMITPREVENTED indicates that the code invoking commit did not initiate the transaction or was given a transaction view that is not allowed to decide its outcome. Distributed transaction contexts can be marshaled to workers and remote services so they can enlist resources, but the root application remains responsible for transaction demarcation unless authority is explicitly delegated by the API model.
Trace where the transaction was created and how the current component obtained its interface or cookie. A library should normally return success or failure to its caller and let the transaction owner commit or abort. Creating an additional transaction locally is not an equivalent repair because it separates the resource work into a different atomic unit.
Ownership details to capture
- Process and call site that began the root transaction.
- Marshaling or propagation path used by the current component.
- Interface type or wrapper exposed to the attempted committer.
- Expected owner of the final commit or abort decision.
References
- Microsoft MS-DTCO: root application and commit request
- Microsoft MS-DTCO: transaction propagation
- IETF: transaction-manager roles and distributed demarcation
Looking for a different code? Search another status or error code.
