What does HRESULT 0x8004D003 (XACT_E_COMMITPREVENTED) mean?

 
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


Looking for a different code? Search another status or error code.