| Previous | Next |
| XACT_S_MADECHANGESINFORM | XACT_S_ABORTING |
XACT_S_ALLNORETAIN
Abort succeeded without retaining the transaction
XACT_S_ALLNORETAIN is HRESULT 315399 (0x0004D007) from winerror.h. The documented description is “The transaction was successfully aborted; However, the abort was non-retaining.” The severity bit indicates a nonfailure result, but the value carries a specific condition that must not be collapsed into plain S_OK.
In the COM transaction and MSDTC protocol, this result means that the transaction was successfully aborted; However, the abort was non-retaining. Before reporting completion, the caller must reconcile the code-specific state transition and every usable output.
Where the status is encountered
- ITransaction commit or abort processing; log the exact method and object state instead of interpreting the constant outside that contract.
- Resource-manager enlistment and coordinated outcomes; log the exact method and object state instead of interpreting the constant outside that contract.
- Transaction event-sink notification passes; log the exact method and object state instead of interpreting the constant outside that contract.
What must be true before accepting it
Verify that every participant treats the old transaction as finished and no retained continuation is assumed. Without that proof, it can mask a caller error even though HRESULT failure severity is not set.
Reconcile side effects associated with it before compensation or a second invocation is attempted.
Evidence to preserve
- Preserve unit of work.
- Preserve requested retaining behavior.
- Preserve resource outcomes.
- Preserve objects invalidated by abort.
- Preserve new transaction identifier.
Correct handling and recovery
Release or recreate transactional objects before further work. Do not reuse the old unit of work or resources that require a retained abort boundary.
Difference from nearby results
Correctly separating it from neighboring values selects the proper continuation and cleanup path.
Practical scenario
An application aborts with a retaining request but receives this status. It closes the old sessions and begins a new transaction before retrying the business operation.
References
- Microsoft: COM transaction status codes — official Microsoft material relevant to this HRESULT.
- Microsoft: ITransaction::Commit
- Microsoft: ITransaction::Abort
- Microsoft: HRESULT values
Looking for a different code? Search another status or error code.
