tpabort() Fails With tperrno=0 But xa_rollback() Returns XAER_NOTA (Doc ID 1530058.1)

Last updated on DECEMBER 05, 2016

Applies to:

Oracle Tuxedo - Version 11.1.1.2.0 and later
Information in this document applies to any platform.

Symptoms

 The client linked RM library, it calls just one RM which is linked itself, and the xa library will call in the process. If the client(e.g. proc.6470 below) calls tpabort(),
xa_rollback() will be called internally and if it fails by XAER_NOTA (i.e. -4, xid not valid) tpabort() fails, with -1, but tperrno is zero.

Here is the relevant ULOG section with TMTRACE turned on:

152026.server!?proc.26470.1.0: 02-18-2013: Tuxedo Version 11.1.1.2.0, 32-bit
152026.server!?proc.26470.1.0: TRACE:at:  { tpinit({"", "simpcl", "<passwd>", "GRP1", 0x0, 8})
152026.server!?proc.26470.1.0: TRACE:at:  } tpinit = 1
152026.server!?proc.26470.1.0: TRACE:at:  { tpopen()
152026.server!?proc.26470.1.0: TRACE:xa:    { xa_open(0x2b61c, 0, 0x0)
152026.server!?proc.26470.1.0: TRACE:xa:    } xa_open = 0
152026.server!?proc.26470.1.0: TRACE:at:  } tpopen = 1
152026.server!?proc.26470.1.0: TRACE:at:  { tpbegin(30, 0x0)
152026.server!?proc.26470.1.0: gtrid x0 x511cef53 x1:   TRACE:xa:    { xa_start(0x2b61c, 0, 0x0)
152026.server!?proc.26470.1.0: gtrid x0 x511cef53 x1:   TRACE:xa:    } xa_start = 0
152026.server!?proc.26470.1.0: gtrid x0 x511cef53 x1:   TRACE:at:  } tpbegin = 1
152026.server!?proc.26470.1.0: gtrid x0 x511cef53 x1:   TRACE:at:  { tpabort(0x0)
152026.server!?proc.26470.1.0: gtrid x0 x511cef53 x1:   TRACE:xa:    { xa_end(0x2b61c, 0, 0x20000000)
152026.server!?proc.26470.1.0: gtrid x0 x511cef53 x1:   TRACE:xa:    } xa_end = 100
152026.server!?proc.26470.1.0: gtrid x0 x511cef53 x1:   TRACE:xa:    { xa_rollback(0x2b61c, 0, 0x0)
152026.server!?proc.26470.1.0: gtrid x0 x511cef53 x1:   TRACE:xa:    } xa_rollback = -4
152026.server!?proc.26470.1.0: TRACE:at:  } tpabort = -1
152026.server!?proc.26470.1.0: TRACE:at:  { tpterm()
152026.server!?proc.26470.1.0: TRACE:at:  } tpterm = 1
152026.server!?proc.26470.1.-2: TRACE:at:  { tpterm()
152026.server!?proc.26470.1.-2: TRACE:at:  } tpterm = 1

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms