My Oracle Support Banner

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 FEBRUARY 12, 2024

Applies to:

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

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:
   //path/to/directory/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 domain:
   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:
   //path/to/directoryx/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

To view full details, sign in with your My Oracle Support account.

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


In this Document
Goal
Solution
References

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.