#include <xa.h> int xa_switch.xa_end_entry(XID *xid, int rmid, long flags);
A transaction manager calls xa_end() when an application thread of control finishes or needs to suspend work on a transaction branch. When xa_end() successfully returns, the calling thread of control is no longer associated with the transaction branch, but the branch still exists.
If the TMSUSPEND flag is not specified, all SQL cursors used while the thread was associated with this transaction branch are closed. Files left open by a procedure, trigger or function that used legacy file access methods are closed regardless of flag settings.
TMSUSPEND: 0x02000000L Suspend a transaction branch on behalf of the calling thread. The transaction manager must resume or end the suspended association in the current thread.
TMSUCCESS: 0x04000000L The portion of work has succeeded.
TMFAIL: 0x20000000L The portion of work has failed.
None
The following return codes indicate that the resource manager has marked the work performed on this transaction branch as rollback-only.
100 | [XA_RBROLLBACK]
The transaction branch was marked rollback-only 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 marked the transaction branch rollback-only 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 by the resource manager. |
Other return codes:
-7 | [XAER_RMFAIL]
An error occurred that makes the resource manager unavailable. |
-6 | [XAER_PROTO]
Function was called in an improper context. |
-5 | [XAER_INVAL]
Incorrect arguments were specified. |
-4 | [XAER_NOTA]
The specified *xid is not known by the resource manager. |
-3 | [XAER_RMERR]
xa_end() was not successful. The resource manager detected an error when ending the transaction branch. |
-2 | [XAER_ASYNC]
xa_end() was not successful. The resource manager does not support asynchronous operations. |
0 | [XA_OK]
xa_end() was successful. |
9 | [XA_NOMIGRATE]
The resource manager was unable to prepare the transaction context for migration. The resource manager has suspended the association. The transaction manager can resume the association in the current thread only. |
The following messages may be sent from this function.
Message ID | Error Message Text |
---|---|
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. |
See Code disclaimer information for information pertaining to code examples.
#include <xa.h> main() { XID *xid; int rmid; long flags; int retcode; extern struct xa_switch_t xa_switch; retcode = xa_switch.xa_end_entry(xid, rmid, flags); }
Top | UNIX-Type APIs | APIs by category |