3.2.5.4.2 Receiving an XAUSER_XACT_MTAG_RESUME Message

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

  • If the connection state is Idle:

    • Set the connection state to Processing Migrate Request.

    • Attempt to find an XA Superior Object in the XA Superior Table referenced by this connection keyed by the guidXaRm field of the message.

    • If an Object is not found:

    • Otherwise:

      • Attempt to find XA Superior Enlistment Object in XA Superior Enlistment Table referenced by the XA Superior Object that meets one of the following conditions:

        • The XID field is set to the XAIdentifier field of the message.

        • The Coupling field of the XA Superior Enlistment Object is set to Tight and has a Child Branch Table which contains an XA Superior Child Branch Enlistment Object with a XID field set to the value of the XAIdentifier field of the message.

      • If an Object is not found:

        • Send an XAUSER_XACT_MTAG_OPEN_NOT_FOUND message using the connection.

      • Otherwise:

        • If first condition was satisfied:

          • If the State field of the XA Superior Enlistment Object is set to Migrate:

            • Set State field of the XA Superior Enlistment Object to Active.

            • Send an XAUSER_XACT_MTAG_OPEN_NOT_FOUND message.

          • Otherwise:

        • Otherwise, if second condition was satisfied:

          • If the State field of the XA Superior Child Branch Enlistment Object is set to Migrate:

          • Otherwise:

            • Send an XAUSER_XACT_MTAG_TRANSACTION_NOT_SUSPENDED message.

    • Set the connection state to Ended.

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