My Oracle Support Banner

Tpcall To Recently Advertised Service May Fail With TPENOENT (Doc ID 3063011.1)

Last updated on DECEMBER 11, 2024

Applies to:

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

Goal

If server process A invokes tpadvertise("SERVICE")
and other (already running) process B immediately does tpcall("SERVICE") then tpcall() may fail with TPENOENT

1>Are service table updates by tpadvertise atomic operations?
Or there is some propagation delay between tpadvertise() return and moment when all (already running) servers will see service table update?

2>Sometimes further investigation showed that it depends on server load: test case fails under moderate and high load. It does not fail if server load is low.

3> When particular set of test cases (there are 12 similar test cases in set) is part of autotest chain, then it fails with random probability (depends on load). When set is run separately in loop, then it fails on 2nd or 3rd loop iteration for myself and on 8th to 12th iteration.

By Adding 1 sec sleep between advertise and service call "solves" the issue, but is not welcome, since it will make longer autotest execution.
So, we need understanding of how tpadvertise() works and when changes in global service table become visible to all processes. Or there is some local copy in each process that is synced with global time-to-time?
 

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


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