Experimental Physics and
My thought is that if the callback doesn't come the semaphore should be released in the same code that sets the "get completion timeout" message. Or is there something the operator should be able to do, short of restarting the sequencer?
Looking at the code in seq_ca.c and seq_if.c, it seems that if a synchronous pvGet ever fails to get a callback from channel access, the "get completion timeout" message is set in the channel metadata and all subsequent attempts to do pvGets on that channel will fail as in the first message. The latter occurs because there is a get semaphore for each channel that the callback is supposed to give.
We have several instances of a sequencer that occasionally start getting messages such as this, every 10 seconds or so:examining that channel with seqChanShow shows:
sevr=fatal pvGet(ss sscanner, var PVL, pv SR08U___GDS1HS_BC03): failed (timeout waiting for other get requests to finish)
#84 of 99:
Variable name: "PVL"
type = long
count = 1
Value = 0
Assigned to "SR08U___GDS1HS_BC03"
Status = 10
Severity = 2
Message = get completion timeout
Time stamp = 2013-06-08 22:00:24.857905
Next? (+/- skip count)
Controls Software Developer
LBNL Engineering Division
510 486 7503
|ANJ, 20 Apr 2015||
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·