xa_rollback()--Roll Back an XA Transaction Branch (Transaction Scoped Locks)
Syntax
#include <xa.h> int xa_switch.xa_rollback_entry(XID *xid, int rmid, long flags);
Default Public Authority: *USE
Service Program: QTNXADTP
Threadsafe: Yes
A transaction manager calls xa_rollback() to roll back work performed on behalf of the transaction branch. A transaction branch is capable of being rolled back until is has been successfully committed.
Parameters
- *xid
- (Input) A pointer to the transaction branch identifier. This identifier was
generated by the transaction manager when the transaction branch was
started.
- rmid
- (Input) An integer value that the transaction manager generated when
calling xa_open(). The rmid identifies the resource
manager.
- flags
- (Input) The following are valid settings of flags.
TMNOFLAGS: 0x00000000L Perform the rollback operation normally.
Authorities
None
Return Value
The following return codes indicate that the resource manager rolled back the work done on this transaction branch. These values are typically returned when the transaction branch was previously marked rollback-only.
100 | [XA_RBROLLBACK]
The transaction branch was rolled back for an unspecified reason. |
101 | [XA_RBCOMMFAIL]
A communications failure occurred within the resource manager. |
102 | [XA_RBDEADLOCK]
A deadlock condition was detected within the resource manager. |
103 | [XA_RBINTEGRITY]
The resource manager detected a violation of the integrity of its resources. |
104 | [XA_RBOTHER]
The resource manager rolled back the transaction branch for a reason not on this list. |
105 | [XA_RBPROTO]
A protocol error occurred in the resource manager. |
106 | [XA_RBTIMEOUT]
A timeout occurred in the resource manager. |
107 | [XA_RBTRANSIENT]
A transient error was detected in the resource manager. |
The following return codes may be returned for any flags setting.
-7 | [XAER_RMFAIL]
An error occurred that makes the resource manager unavailable. |
-6 | [XAER_PROTO]
xa_rollback() was not successful. Function was called in an improper context. |
-5 | [XAER_INVAL]
xa_rollback() was not successful. Incorrect arguments were specified. |
-4 | [XAER_NOTA]
The specified xid is not known by the resource manager. |
-3 | [XAER_RMERR]
xa_rollback() was not successful. The resource manager detected an error when rolling back the transaction. |
-2 | [XAER_ASYNC]
xa_rollback() was not successful. The resource manager does not support asynchronous operations. |
0 | [XA_OK]
xa_rollback() was successful. |
5 | [XA_HEURMIX]
Work on the transaction branch was partially committed and partially rolled back. |
6 | [XA_HEURRB]
Work on the transaction branch was heuristically rolled back. |
7 | [XA_HEURCOM]
Work on the transaction branch was heuristically committed. |
8 | [XA_HEURHAZ]
Work on the transaction branch may have been heuristically completed. |
Error Messages
The following messages may be sent from this function.
CPE3418 E | Possible APAR condition or hardware failure. |
CPF3CF2 E | Error(s) occurred during running of &1 API. |
CPF9872 E | Program or service program &1 in library &2 ended. Reason code &3. |
Related Information
- X/Open CAE Specification, December 1991, Distributed Transaction
Processing: The XA Specification (ISBN:1-872630-24-3, C193 or XO/CAE/91/300),
The Open Group.
- X/Open CAE Specification, April 1995, Distributed Transaction Processing: The TX (Transaction Demarcation) Specification (ISBN:1-85912-094-6, C504), The Open Group.
Example
Note: By using the code examples, you agree to the terms of the Code license and disclaimer information.
#include <xa.h> main() { XID *xid; int rmid; long flags; int retcode; extern struct xa_switch_t xa_switch; retcode = xa_switch.xa_rollback_entry(xid, rmid, flags); }
API introduced: V5R2