Caput with callback does not notify failure
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
EPICS Base |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
If caput with callback is used to write to a PV which rejects the caput then success is returned.
An example exchange (captured with wireshark and decoded with the caproto plugin) follows:
Asynchronous
Client -> IOC
Command: Write (0x0004)
Payload Size: 8
DBR Type: DOUBLE (6)
Data Count: 1
Operation ID: 1
Server Channel ID: 519
Value: 0
IOC -> Client
Command: Error (0x000b)
Payload Size: 48
Data Type: 0x0000
Data Count: 0
Client Channel ID: 1
Status: ECA_PUTFAIL (0x000000a0)
Channel Access
Command: Write (0x0004)
Payload Size: 8
Data Type: 0x0006
Data Count: 1
Param 1: 0x00000207
Param 2: 0x00000001
Error Message: TS-DI-TMBF-
Synchronous
Client -> IOC
Command: Write Notify (0x0013)
Payload Size: 8
DBR Type: DOUBLE (6)
Data Count: 1
Operation ID: 3
Server Channel ID: 520
Value: 0
IOC -> Client
Command: Write Notify (0x0013)
Payload Size: 0
DBR Type: DOUBLE (6)
Data Count: 1
Operation ID: 3
Status: ECA_NORMAL (0x00000001)
The code paths in the server for synchronous and asynchronous caput processing are very different.
Note that this bug has an impact on bug #1741844.
No, this is not exactly a duplicate. In particular, this bug report is actually reporting a deficiency in the CA implementation of the return from Write Notify, whereas #1741844 is reporting a problem with the caput command line tool.
Clearly these two reports can be merged, as there is a common underlying issue, but the conversation in #1741844 completely misses the fact that the server side implementation of CA is failing to report completion failure.