3.3.5.1.2.5 Receiving a TXUSER_BEGIN2_MTAG_SINK_ERROR Message

When the application receives a TXUSER_BEGIN2_MTAG_SINK_ERROR message, the application MUST perform the following actions:

  • If the connection state is Awaiting Begin Response:

    • If the Error field in the message is set to TRUN_TXBEGIN_ERROR_NO_MEM or TRUN_TXBEGIN_ERROR_BEGIN_LOG_FULL or TRUN_TXBEGIN_ERROR_DUPLICATE_GUID:

      • Return a failure result to the higher-layer business logic.

      • Set the connection state to Ended.

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

  • If the connection state is Processing Transaction (section 3.3.1.2.3):

    • If the Error field of the message is set to TRUN_TXBEGIN_ERROR_NOTIFY_ABORTED:

      • Return a transaction aborted result to the higher-layer business logic.

      • Set the connection state to Ended.

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

  • If the connection state is Awaiting Commit Response:

    • If the Error field in the message is set to TRUN_TXBEGIN_ERROR_NOTIFY_COMMITTED or TRUN_TXBEGIN_ERROR_NOTIFY_ABORTED or TRUN_TXBEGIN_ERROR_NOTIFY_INDOUBT:

      • Return the corresponding transaction outcome as a result to the higher-layer business logic.

      • Set the connection state to Ended.

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

  • If the connection state is Awaiting Abort Response:

    • If the Error field of the message is set to TRUN_TXBEGIN_ERROR_NOTIFY_ABORTED:

      •  Return a transaction aborted result to the higher-layer business logic.

      • Set the connection state to Ended.

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

  • If the Connection state is Awaiting Set Timeout Response:

    • If the Error field of the message is set to TRUN_TXBEGIN_ERROR_NOTIFY_ABORTED:

      • Return a Transaction Aborted result to the higher-layer business logic.

      • Set the connection state to Ended.

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

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