3.6.5.2.2.5 Connection Disconnected

When a CONNTYPE_TXUSER_ENLISTMENT (section 2.2.10.2.2) connection is disconnected, the transaction manager MUST perform the following actions:

  • If the connection state is either Processing Enlistment Request (section 3.6.1.4.2) or Active (section 3.6.1.4.3):

    • Signal the Enlistment Unilaterally Aborted (section 3.2.7.19) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the Enlistment object of the connection.

  • Otherwise, if the connection state is Awaiting Prepare Response (section 3.6.1.4.5):

    • Signal the  Enlistment Phase One Complete (section 3.2.7.16) event on the Core Transaction Manager Facet with the following arguments:

      • The Enlistment object of the connection

      • The aborted outcome

  • Otherwise, if the connection state is Awaiting Single-Phase Commit Response (section 3.6.1.4.4):

    • Signal the Enlistment Phase One Complete event on the Core Transaction Manager Facet with the following arguments:

      • The Enlistment object of the connection

      • The In Doubt (section 3.2.1.3.12) outcome

  • Otherwise, if the connection state is Awaiting Commit Response (section 3.6.1.4.8), the transaction manager MUST perform the following action:

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

  • Otherwise, if the connection state is Awaiting Abort Response (section 3.6.1.4.9):

    • Signal the Enlistment Rollback Complete (section 3.2.7.18) event on the Core Transaction Manager Facet with the Enlistment object of the connection.

  • Finally, in all cases, the event MUST be processed as specified in section 3.1.8.3.