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 laterInformation 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 |