| Previous | Next |
| XACT_E_NOTIMEOUT | XACT_E_ABORTED |
XACT_E_ALREADYINPROGRESS
Concurrent completion requests must converge on one protocol operation
XACT_E_ALREADYINPROGRESS reports that commit, abort, or another transaction action was started and has not finished. Distributed completion may remain active while MSDTC waits for participant votes, remote transaction managers, durable logging, or outcome acknowledgments.
Do not launch a second completion path as a timeout workaround. Retain the original asynchronous result or callback, correlate it by transaction ID, and allow cancellation only through an API that explicitly supports it. If callers can race, introduce a single owner for the transition and return the existing pending operation to later callers. Restarting MSDTC during Phase One can turn a latency problem into recovery work and in-doubt transactions.
Concurrency information to preserve
- Operation type, owner, and start time.
- Pending asynchronous callback or completion handle.
- Participant currently delaying progress.
- Second caller and reason it attempted the same transition.
References
- Microsoft: asynchronous transaction resource callbacks
- Microsoft MS-DTCO: waiting for Phase One participants
- Microsoft MS-DTCO: Phase Two acknowledgments
Looking for a different code? Search another status or error code.