-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
repeated put followed by get can fail #70
Comments
I still do not have a solution to this problem but I think it is caused by race conditions related to how event.h is being used. I also made changes to exampleClient. |
In exampleClient/testMultiplePutGet, I renamed pvaPutGet to pvaPutGetSleep. Both look they work successfully every time. But I may not get a chance to work on it until day after tomorrow. |
I made quite a few changes. As far as I know I have not broken any existing client code unless the client called methods that are now protected. |
Hi Marty, the exampleCPP builds on Jenkins have been failing for several days. I haven't checked the logs in detail, but this error appears on the RHEL6 and RHEL7 builds:
I think your updates may have assumed a newer version of the C++ compiler than we have on those targets. The API is different but the epicsStdlib.h header defines a couple of routines that might work instead, or maybe I just stopped using
Base provides an osiUnistd.h header which is designed to replace unistd.h and is available on all our targets, please try that instead. |
On 2/26/21 7:15 PM, Andrew Johnson wrote:
Hi Marty, the exampleCPP builds on Jenkins have been failing for
several days. I haven't checked the logs in detail, but this error
appears on the RHEL6 and RHEL7 builds:
|../multiPutDouble.cpp: In function 'int main(int, char**)':
../multiPutDouble.cpp:140: error: 'stod' is not a member of 'std' |
I think your updates may have assumed a newer version of the C++
compiler than we have on those targets. The API is different but the
epicsStdlib.h header defines a couple of routines that might work
instead, or maybe |strtod()|?
I just stopped using |make -j4| for the Windows builds to make it
easier to find the error and they both fail with this:
|c:\jenkins\win64-2\workspace\3.15-example-win64\testmultipleputget\src\pvaputgetsleep.cpp(13):
fatal error C1083: Cannot open include file: 'unistd.h': No such file
or directory |
Base provides an osiUnistd.h header which is designed to replace
unistd.h and is available on all our targets, please try that instead.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#70 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABOVBVWGKA6EYRRO4DZ2PFDTBA2TPANCNFSM4X4Q324A>.
I replaced stod with strtod.
I did not see osiUnistd.h in epics-base/include
mrk> pwd
/home/epics7/epics-base/include
mrk> ls osi*
osiClockTime.h osiPoolStatus.h osiProcess.h osiSock.h osiWireFormat.h
mrk>
|
|
I just pushed changes to branch pvaClientMultiChannel_changes. Andrew, This had a side effect of getting rid of the exampleCPP builds on Jenkins failing. |
If a client does a put to multiple channels followed by a get to that same channels the gets do not always get the same value that was put.
The problem occurs with with both pvaClient and pvaClientMultiChannel.
Sinisa reported the problem for pvaClientMultiChannel.
Two tests were added to exampleClient/testClient: testNTMultiPutGet and testPutGet.
These demonstrate the problem.
If they are run against a single channel both report no errors.
As soon as more than one channel is specified both report errors.
The text was updated successfully, but these errors were encountered: