RP/TUX 8.1 - tpbegin() with infinite timeout does not work when TM_DOMAIN_KEEPTRANTIME is set on remote domain which advertised service called (Doc ID 778265.1)

Last updated on NOVEMBER 04, 2016

Applies to:

Oracle Tuxedo
Information in this document applies to any platform.
Information in this document applies to any platform
***Checked for relevance on 04-10-2010***

Goal

DESCRIPTION:
If there is tpbegin(0,0) and if TM_DOMAIN_KEEPTRANTIME is set in GWTDOMAIN environment which advertised service
called, then the call gets TPETIME error (-13).

Find here below client call output:
/home/user/xxxxx/dom1> simpcl TOUPPER 1 Y 0 test_y_0
Before calling TOUPPER 1 times, message size 8
transaction started, timeout 0
Can't send request to service TOUPPER - 13

Ulog extract on local domain:
TRACE:at: } tpalloc = 0x41ed0
TRACE:at: { tpbegin(0, 0x0)
gtrid x0 x487345dd x4: TRACE:at: } tpbegin = 1
gtrid x0 x487345dd x4: TRACE:at: { tpcall('TOUPPER', 0x3ff48, 0, 0xffbef954, 0xffbef94c, 0x0)
gtrid x0 x487345dd x4: TRACE:at: } tpcall = -1 [tperrno TPETIME]
gtrid x0 x487345dd x4: TRACE:at: { tpfree(0x3ff48)
gtrid x0 x487345dd x4: TRACE:at: } tpfree
gtrid x0 x487345dd x4: TRACE:at: { tpfree(0x41ed0)
gtrid x0 x487345dd x4: TRACE:at: } tpfree

On remote one:
gtrid x0 x48734630 x3: TRACE:at: { tpservice({'TOUPPER', 0x10, 0x43d80, 9, 0, -1, {0, -2, -1}})
gtrid x0 x48734630 x3: TRACE:at: { tpreturn(2, 0, 0x43d80, 0, 0x0)
LIBTUX_CAT:1397: WARN: tpreturn transaction processing failure
TRACE:at: } tpreturn [long jump] [tperrno TPETIME]
TRACE:at: } tpservice [tperrno TPETIME]

If you set non infinite timeout during call (4th parameter in the client) it works fine. Below is the output:
/home/user/xxxxxx/dom1> simpcl TOUPPER 1 Y 60 test_y_60
Before calling TOUPPER 1 times, message size 8
transaction started, timeout 60
Returned string is: TEST_Y_60

Ulog local domain :
TRACE:at: { tpbegin(60, 0x0)
gtrid x0 x487345dd x5: TRACE:at: } tpbegin = 1
gtrid x0 x487345dd x5: TRACE:at: { tpcall('TOUPPER', 0x3ff48, 0, 0xffbef94c, 0xffbef944, 0x0)
gtrid x0 x487345dd x5: TRACE:at: } tpcall = 0
gtrid x0 x487345dd x5: TRACE:at: { tpcommit(0x0)
gtrid x0 x487345dd x5: TRACE:ia: { tpalloc('rpcrqst', '', 0)
gtrid x0 x487345dd x5: TRACE:ia: } tpalloc = 0x44818
gtrid x0 x487345dd x5: TRACE:ia: { tpgetrply(0xffbef754, 0xffbef758, 0xffbef750, 0x800002)
gtrid x0 x487345dd x5: TRACE:ia: } tpgetrply = 2
gtrid x0 x487345dd x5: TRACE:ia: { tpfree(0x44818)
gtrid x0 x487345dd x5: TRACE:ia: } tpfree
TRACE:at: } tpcommit = 1

In remote one:
gtrid x0 x48734630 x4: TRACE:at: { tpservice({'TOUPPER', 0x10, 0x482e0, 10, 0, -1, {0, -2, -1}})
gtrid x0 x48734630 x4: TRACE:at: { tpreturn(2, 0, 0x482e0, 0, 0x0)
TRACE:at: } tpreturn [long jump]
TRACE:at: } tpservice

IMPACT:
Cannot use tpbegin() with infinite timeout when TM_DOMAIN_KEEPTRANTINE is set on remote domain.

CONFIGURATION:
Tuxedo 8.1 32-bit RP346 on Sun Solaris

Solution

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