3.2.5.6.4 Receiving an XAUSER_XACT_MTAG_ABORT Message

When the XA Subordinate Transaction Manager Facet receives an XAUSER_XACT_MTAG_ABORT message, it MUST perform the following actions:

  • If the receiving connection references XA Superior Enlistment:

    • If the connection state is set to Active and the State field of the XA Superior Enlistment Object referenced by the XA Superior Enlistment CMP Connection is set to Aborted:

    • Otherwise if the connection state is set to Active and the State field of the XA Superior Enlistment Object referenced by the XA Superior Enlistment CMP Connection is set to either Active, Prepared, or In Doubt:

      • Set Current Request CMP Connection field of XA Superior Enlistment Object referenced by the XA Superior Enlistment CMP Connection to receiving connection.

      • Set State field of XA Superior Enlistment Object referenced by the XA Superior Enlistment CMP Connection to Aborting.

      • Signal the Begin Rollback event ([MS-DTCO] section 3.2.7.6) on the Core Transaction Manager Facet with the following argument:

        • The Transaction Object referenced by the XA Superior Enlistment Object referenced by the XA Superior Enlistment CMP Connection.

    • Otherwise, if the connection state is set to Active and the State field of the XA Superior Enlistment Object referenced by the XA Superior Enlistment CMP Connection is set to Aborting and Current Request CMP Connection referenced by XA Superior Enlistment referenced by the XA Superior Enlistment CMP Connection is not set:

      • Set Current Request CMP Connection field of XA Superior Enlistment referenced by the XA Superior Enlistment CMP Connection to receiving connection.

      • Set the connection state to Ended.

    • Otherwise, the message MUST be processed as an invalid message as specified in section 3.1.6.

  • Otherwise, if receiving connection references XA Superior Child Branch Enlistment:

    • If the connection state is set to Active and the State field of the Parent XA Superior Enlistment Object referenced by XA Superior Child Branch Enlistment referenced by receiving connection is set to Aborted:

      • Send XAUSER_XACT_MTAG_REQUEST_COMPLETED message.

      • Remove the XA Superior Child Branch Enlistment from the Child Branch table referenced by the Parent XA Superior Enlistment Object referenced by the XA Superior Child Branch Enlistment.

    • Otherwise, if the connection state is set to Active and the State field of the XA Superior Enlistment is set to either Active, Prepared, or In Doubt:

      • Set Current Request CMP Connection field of the XA Superior Child Branch Enlistment to receiving connection.

      • Set the State field of Parent XA Superior Enlistment referenced by XA Superior Child Branch Enlistment to Aborting.

      • Signal the Begin Rollback event ([MS-DTCO] section 3.2.7.6) on the Core Transaction Manager Facet with the following argument:

        • The Transaction Object referenced by Parent XA Superior Enlistment Object.

    • Otherwise, if the connection state is set to Active and the State field of the XA Superior Enlistment Object is set to Aborting and Current Request CMP Connection referenced by XA Superior Enlistment is not set:

      • Set Current Request CMP Connection field of XA Superior Child Branch Enlistment to receiving connection.

    • Otherwise: