11.24.1 Non-fatal Transaction Errors

When transaction errors occur, the system returns TPETRAN in tperrno(5). The precise meaning of such an error, however, depends on the function that is returning it. The following table lists the functions that return transaction errors and describes possible causes of them.

Table 11-3 Transaction Errors

Function Cause
tpbegin() Usually caused by a transient system error that occur during an attempt to start the transaction. The problem may clear up with a repeated call.
tpcancel() The function was called for a transaction reply after a request was made without the TPNOTRAN flag.
tpresume() The Oracle Tuxedo system is unable to resume a global transaction because the caller is currently participating in work outside the global transaction with one or more resource managers. All such work must be completed before the global transaction can be resumed. The caller’s state with respect to the local transaction is unchanged.
tpconnect(), tppost(), tpcall(), and tpacall() A call was made in transaction mode to a service that does not support transactions. Some services belong to server groups that access a database management system (DBMS) that, in turn, support transactions. Other services, however, do not belong to such groups. In addition, some services that support transactions may require interoperation with software that does not. For example, a service that prints a form may work with a printer that does not support transactions. Services that do not support transactions may not function as participants in a transaction.

The grouping of services into servers and server groups is an administrative task. In order to determine which services support transactions, check with your application administrator.

You can correct transaction-level errors at the application level by enabling the TPNOTRAN flag or by accessing the service for which an error was returned outside of the transaction.