3.7.5.1.2.1.9 Connection Disconnected

When a CONNTYPE_PARTNERTM_BRANCH (section 2.2.9.1.2.1) connection is disconnected, the superior transaction manager facet MUST perform the following actions:

  • If the connection state is Awaiting Prepare Response:

    • If the state of the transaction object that is referenced by the connection is Single Phase Commit (section 3.2.1.3.9):

      • Signal the Enlistment Phase Zero Complete (section 3.2.7.17) event on the Core Transaction Manager Facet (section 1.3.3.3.1) with the following arguments:

        • The Enlistment object that is referenced by this connection

        • The In Doubt outcome value

    • Otherwise:

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

        • The Enlistment object that this connection references

        • The Aborted outcome value

  • Otherwise, if the connection state is Awaiting Commit Response:

    • Retrieve the Enlistment object that is referenced by the connection object.

    • Initiate a new CONNTYPE_PARTNERTM_REDELIVERCOMMIT (section 2.2.9.2.2.1) connection using the Name object referenced by the Name field of the Session object containing the provided connection.

    • Add the new connection object to the connection list of the transaction object referenced by the Enlistment object.

    • Assign the new connection object to the enlistment Enlistment Object.Connection field of the Enlistment Object.

    • Assign the enlistment to the new connection's Enlistment field.

    • Send a PARTNERTM_REDELIVERCOMMIT_MTAG_COMMITREQ (section 2.2.9.2.2.1.1) message using the connection:

      • Set the guidTX field to the Transaction Object.Identifier field of the transaction object that is referenced by this connection Enlistment object.

    • Set the new connection state to Awaiting Confirmation.

  •  Otherwise, if the connection state is Awaiting Abort Response:

    • Signal the Enlistment Rollback Complete (section 3.2.7.18) event on the Core Transaction Manager Facet with the Enlistment object that is referenced by this connection.

  • Otherwise, if the connection state is either Phase Zero, Phase Zero Registration During Phase Zero, or Phase Zero with Outstanding Registration:

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

      • The Enlistment object that is referenced by this connection

      • The Aborted outcome value

  • Otherwise, if the connection state is either Branching, Active, Phase Zero Registration, or Requesting Phase Zero:

    • Signal the Enlistment Unilaterally Aborted (section 3.2.7.19) event on the Core Transaction Manager Facet with the Enlistment object that is referenced by this connection.

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