3.6.7.1 Begin Commit

The Begin Commit event MUST be signaled with the following arguments:

If the Begin Commit event is signaled, the transaction manager MUST perform the following actions:

  • If the connection of the provided enlistment is of type CONNTYPE_TXUSER_VOTER (section 2.2.10.4.1):

    • Send a TXUSER_STATUS_MTAG_COMMITTED (section 2.2.10.4.1.2) message using the connection.

    • Set the connection state to Ended.

  • Otherwise, if the connection of the provided enlistment is of type CONNTYPE_TXUSER_ENLISTMENT (section 2.2.10.2.2):

    • If the connection state is Ended:

      • Add the provided Enlistment object to the Failed to Notify List of the transaction manager (section 3.6.1).

    • Otherwise:

      • Send a TXUSER_ENLISTMENT_MTAG_COMMITREQ (section 2.2.10.2.2.3) message using the connection.

      • Set the connection state to Awaiting Commit Response (section 3.6.1.4.8).

  • Otherwise, if the connection of the provided enlistment is of type CONNTYPE_TXUSER_REENLIST (section 2.2.10.3.1):

    • If the connection state is Processing Reenlist Request (section 3.6.1.5.2):

      • Send a TXUSER_REENLIST_MTAG_REENLIST_COMMITTED (section 2.2.10.3.1.3) message using the connection.

      • Set the connection state to Ended.

    • Otherwise:

      • Ignore the signal.