LIXA and X/OPEN CAE specifications

The LIXA project tries to be as compliant as possible with the X/Open CAE specifications cited in bibliography. Below there are the features that are not implemented and the features that are not implementable.

The commit_return Characteristic

As explained in [TXspec] (3.4, 3.8.1) two values are available:

  • TX_COMMIT_COMPLETED

  • TX_COMMIT_DECISION_LOGGED

LIXA TX API implementation supports only TX_COMMIT_COMPLETED this behavior is allowed by the specification.

The transaction state element

As explained in [TXspec] (4.2, page 16) tx_info() can return three values:

  • TX_ACTIVE

  • TX_TIMEOUT_ROLLBACK_ONLY

  • TX_ROLLBACK_ONLY

LIXA tx_info() does not return TX_ROLLBACK_ONLY. This does not hurt the X/Open CAE specification.

XA -> TX return code mappings

In [TXspec] (Appendix B.4, page 64) it is suggested to return the value TX_ERROR when the Resource Manager returns XA_RETRY; this is explained in note 1.

The LIXA implementation of for tx_commit() and tx_rollback() returns TX_NO_BEGIN instead of TX_ERROR because it seems a more useful information for the Application Program: the transaction has been successfully committed/rolled back, but a new transaction can not be started [6].

xa_rollback() and XA_RETRY return code

In [TXspec] (Appendix B.5, page 69) it is explained XA_RETRY is a valid return code for function xa_rollback(). Unfortunately [XAspec] does not agree with this point of view: the XA_RETRY is not a valid return code for function xa_rollback(). It may be an error in [TXspec]: the same row could have been copied from the previous table (page 68).

[XA+spec] does not list XA_RETRY as a valid return code for function xa_rollback(); it lists XA_RETRY_COMMFAIL but it does not apply to LIXA implementation because it is related to the Communication Resource Manager concept that is not supported by LIXA implementation.

The LIXA implementation sticks to [XAspec]: if a resource manager returned XA_RETRY it would be considered a bug inside the resource manager.



[6] The X/Open CAE specification document suggests the mapping and it seems there is some flexibility in the suggestions. From a LIXA perspective all this stuff is academic because TMNOWAIT is not used by LIXA implementation.