Experimental Physics and Industrial Control System
Hi Marty,
On 08/31/2017 01:38 PM, Marty Kraimer wrote:
> mrk> caput DBRdouble00 10
> Old : DBRdouble00 2
> CA.Client.Exception...............................................
> Warning: "Channel write request failed"
> Context: "op=1, channel=DBRdouble00, type=DBR_STRING, count=1, ctx="DBRdouble00""
> Source File: ../oldChannelNotify.cpp line 160
> Current Time: Thu Aug 31 2017 13:50:16.296689621
> ..................................................................
> New : DBRdouble00 10
I get the same result as you with a base-3.16 master build of
exampleCPP, and it even happens with the Base 3.16 softIoc loading a
single ao record, so this has nothing to do with V4:
tux% cat ~/db/analog.db
record(ao, "$(user):ao") {}
record(ai, "$(user):ai") {}
tux% bin/linux-x86_64/softIoc -m user=anj -d ~/db/analog.db
Starting iocInit
############################################################################
## EPICS R3.16.1-DEV
## EPICS Base built Aug 31 2017
############################################################################
iocRun: All initialization complete
epics> dbl
anj:ao
anj:ai
tux% caput anj:ao 10
Old : anj:ao 0
CA.Client.Exception...............................................
Warning: "Channel write request failed"
Context: "op=1, channel=anj:ao, type=DBR_STRING, count=1,
ctx="anj:ao"New : anj:ao 10
"
Source File: ../oldChannelNotify.cpp line 160
Current Time: Thu Aug 31 2017 15:23:51.055293326
..................................................................
tux%
The problem is related to the new Link Support code: The OUT links in
both ao records are unset so are CONSTANT links, and the ao Soft Device
support returns the status value it gets from calling dbPutLink() as the
result of its write_ao() method, but for the CONSTANT link type there is
no lset::putValue() method, so the return value from dbPutLink() is
S_db_noLSET, which now gets returned all the way back through the
rset::process() method up to the routine dbChannel_put() so RSRV sees an
error from the put which it passes back to the CA client.
The same problem will probably occur with bo, stringout and lso records
because the soft device support for those record types also pass the
return value from dbPutLink() back to the record type. Other device
supports always return 0 independent of what dbPutLink() returns so
won't generate the error.
Ralph, Michael:
Where do you think is the correct place to squash this error? Should I
add a dummy lset::putValue() method to the dbConstLink type (that just
returns OK), or change the soft device supports to discard the return
value from dbPutLink()?
- Andrew
--
Arguing for surveillance because you have nothing to hide is no
different than making the claim, "I don't care about freedom of
speech because I have nothing to say." -- Edward Snowdon
- Replies:
- Re: base-3.16.1 bug Ralph Lange
- Navigate by Date:
- Prev:
RE: areaDetector developers meeting @ ITER Mark Rivers
- Next:
Re: base-3.16.1 bug Ralph Lange
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
<2017>
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Re: [epics-base/pvAccessCPP] fix issues 62,63,64 (#65) Andrew Johnson
- Next:
Re: base-3.16.1 bug Ralph Lange
- Index:
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
<2017>
2018
2019
2020
2021
2022
2023
2024