| Previous | Next |
| ERROR_ENLISTMENT_NOT_SUPERIOR | ERROR_RM_ALREADY_STARTED |
ERROR_RECOVERY_NOT_NEEDED
KTM recovery was requested for an RM that is already consistent
ERROR_RECOVERY_NOT_NEEDED belongs to the Windows Kernel Transaction Manager transaction-processing model. Recovery is a defined phase for durable transaction managers and resource managers. RecoverResourceManager causes KTM to deliver recovery notifications for enlistments that require reconciliation, and RecoverEnlistment can redeliver commit or in-doubt state. If the RM is already consistent, there is no recovery state to drive and the request is unnecessary.
Treat this as a state-machine signal rather than evidence of corruption. Check whether startup calls recovery twice, whether parallel initialization paths race, or whether a watchdog retries recovery after the RM has already reached ready state. Make the service state explicit: created, recovering, recovered, active, and shutting down. If the RM expected unresolved transactions but KTM says recovery is unnecessary, compare the RM local log with KTM presumed-abort rules before manufacturing recovery work.
What to inspect
- Log RM recovery state transitions and the caller initiating recovery.
- Prevent duplicate or concurrent RecoverResourceManager sequences.
- If local RM state disagrees, compare it with KTM presumed-abort recovery semantics.
References
- Microsoft: KTM recovery processing and presumed abort
- Microsoft: creating and recovering a KTM resource manager
- Microsoft: KTM transaction, TM, RM, and enlistment functions
Looking for a different code? Search another status or error code.
