Site icon EfmSoft

What does HRESULT 0x8004D009 (XACT_E_NOASYNC) mean?

 
Previous Next
XACT_E_ISOLATIONLEVEL XACT_E_NOENLIST

XACT_E_NOASYNC

XACT_E_NOASYNC is the failure HRESULT 0x8004D009 (signed decimal -2147168247, unsigned decimal 2147799049). Its severity bit is 1, facility is 4 (FACILITY_ITF), and the facility-specific code field is 0xD009.

The selected transaction operation has no asynchronous contract

This HRESULT means that the caller asked a transaction manager or transaction object to perform a method asynchronously, but that method implementation only supports synchronous completion. The request is rejected before an asynchronous outcome channel can be relied upon.

AllStat records the Windows message as: “The transaction manager doesn't support an asynchronous operation for this method.” This text should be interpreted at the transaction stage described below rather than as a generic COM failure.

The contract boundary to identify

The decisive input is the asynchronous option on the exact method that returned the code. It is not evidence that all MSDTC operations are synchronous, nor that a callback merely arrived late. The caller must verify the method-specific flags and the interface version actually obtained from the transaction object.

Likely causes to separate

Evidence worth preserving

Diagnostic sequence

Retry and recovery

Remove the unsupported asynchronous option or move the operation to a documented asynchronous transaction path. A retry with the same method and flags is deterministic. When switching to synchronous execution, revise cancellation and timeout handling so the calling thread does not create a new deadlock or availability problem.

What this HRESULT does not establish

The code does not indicate that commit or abort already happened. It also does not mean that MSDTC is unavailable, that the transaction timed out, or that an asynchronous request is still pending.

Difference from nearby transaction results

XACT_S_ASYNC means a supported asynchronous operation started and its final outcome is not yet known. XACT_E_ALREADYINPROGRESS instead reports that an operation is already active for the transaction.

Practical scenario

A native wrapper always sets the asynchronous commit option. A local provider accepts synchronous commit only and returns this HRESULT before beginning completion. The wrapper clears the option, waits for the synchronous result, and keeps asynchronous orchestration outside the transaction API.

Guidance for software and telemetry

Expose asynchronous support as a negotiated capability, not a universal configuration switch. Telemetry should distinguish “mode rejected before start” from “operation started and awaiting outcome.”

Official Microsoft references


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

Exit mobile version