3.3.5.9 Receiving RECONNECT TIP Command

The RECONNECT TIP command MUST be received with the following argument:

  • subordinate's transaction identifier.

When the TIP subordinate transaction manager facet (section 1.3.1.2.2) receives a RECONNECT TIP command, it MUST perform the following actions:

  • If the value of the Allow Network Transactions flag or the Allow Inbound Transactions flag is FALSE:

  • Test whether the receiving TIP connection object meets any of the following conditions:

    • The State field of the receiving TIP connection object is not set to Idle.

    •  The Connection Type field of the receiving TIP connection object is not set to Secondary.

  • If the receiving TIP connection satisfies any of the conditions, signal the Invalid TIP Command event (section 3.3.7.1) and terminate the processing of this event.

  • Test the transaction table to see if there is transaction object that meets the following conditions:

    • Its Transaction Identifier field is set to the provided subordinate's transaction identifier.

    • Its Superior Enlistment field contains an enlistment object whose TIP Connection field contains a TIP connection object whose Partner Transaction Manager Address field is set to the partner transaction manager address of the receiving TIP connection object.

  • If these conditions are not met, signal the Invalid TIP Command event (section 3.3.7.1) and terminate the processing of this event.

  •  The TIP Connection field of the enlistment object referenced by the Superior Enlistment field of this transaction object indicates whether this TIP subordinate transaction manager facet is awaiting the reply for a QUERY TIP command for the same transaction. Wait until this field is not set before continuing the processing of this event.

  • Call the Transaction Identifier Converter's Convert TIP Transaction Identifier to Transaction Identifier operation with the following argument:

    • subordinate's transaction identifier.

  • Attempt to find the Transaction Identifier returned from the Transaction Identifier Converter's Convert TIP Transaction Identifier to Transaction Identifier operation in the Transaction table of the core transaction manager facet.

  • If a transaction object is not found:

    • Send a NOTRECONNECTED TIP command.

  • Otherwise:

    • If the Partner Transaction Manager Address field of the Superior Enlistment referenced by the transaction object is not set to Partner Transaction Manager Address field of the TIP connection object:

      • Send a NOTRECONNECTED TIP command.

  • Otherwise:

    • Test whether the following conditions are all true, which indicates that there is an outstanding QUERY TIP command that this TIP subordinate transaction manager facet sent for this transaction:

      • The State field of the receiving TIP connection is set to Idle Query.

      • The TIP connection object of the Superior Enlistment referenced by the transaction object is set.

    • If the preceding conditions are all true:

      • Wait for the TIP connection object referenced by the Superior Enlistment referenced by the transaction object to be reset when a response to the QUERY TIP command is received.

    • Otherwise:

      • Cancel the query timer (section 3.3.2.1) associated with the Superior Enlistment referenced by the transaction object, if started.

      • Reset the TIP connection object referenced by the Superior Enlistment referenced by the transaction object.

      • Set the TIP Connection field of the Superior Enlistment object of the transaction object to the receiving TIP connection object.

      • Send a RECONNECTED TIP command.

      • Set the State field of the receiving TIP connection object to Prepared.