| Previous | Next |
| ERROR_RM_DISCONNECTED | ERROR_RECOVERY_NOT_NEEDED |
ERROR_ENLISTMENT_NOT_SUPERIOR
A superior-only transaction operation was used with the wrong enlistment type
ERROR_ENLISTMENT_NOT_SUPERIOR belongs to the Windows Kernel Transaction Manager transaction-processing model. KTM uses ordinary enlistments to connect resource managers to transactions. Superior transaction managers use a special superior enlistment when coordinating a subordinate branch. APIs such as CommitEnlistment, PrepareEnlistment, and PrePrepareEnlistment are documented for communication resource managers acting in the superior role. Passing a normal participant enlistment cannot supply that branch-coordinator relationship.
Trace the enlistment creation path and preserve the enlistment ID and transaction-tree role. Generic handle wrappers are particularly risky because both ordinary and superior relationships are represented by enlistment handles. Check whether propagation created the expected superior enlistment and whether reconnect logic substituted a newly created normal enlistment. The repair is to use the handle for the correct relationship, not to repeat the superior-only call.
What to inspect
- Record whether each enlistment was created for ordinary RM participation or a superior role.
- Check the propagation path that should create the superior enlistment.
- Use typed wrapper objects so superior-only APIs cannot receive an ordinary enlistment handle.
References
- Microsoft: KTM enlistment objects and notifications
- Microsoft: superior transaction managers and superior enlistments
- Microsoft: KTM transaction, TM, RM, and enlistment functions
Looking for a different code? Search another status or error code.