inconsistent RPRO queuing of busy async records
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
EPICS Base | Status tracked in 7.0 | |||||
3.16 |
Fix Released
|
Undecided
|
Unassigned | |||
7.0 |
Fix Released
|
Undecided
|
mdavidsaver |
Bug Description
I notice that dbPutField() sets RPRO=1 when PACT=1, but dbProcess()
itself does not. This means that dbPutField() to a record w/ PACT=1
is queued for reprocessing, but async records processed indirectly
(via DB link) are not queued for reprocessing.
A database which demonstrates the process is the following.
I think that "tst:val.VAL" should _eventually_ be 2.
Currently it's 1, with the change below, it's 2.
> record(fanout, "tst:fout") {
> field(PINI, "RUNNING")
> field(LNK1, "tst:calc")
> field(LNK2, "tst:calc")
> field(TPRO, "1")
> }
>
> record(calcout, "tst:calc") {
> field(INPA, "tst:calc")
> field(CALC, "A+1")
> field(ODLY, "0.1")
> field(OUT , "tst:val")
> field(TPRO, "1")
> }
>
> record(longin, "tst:val") {
> field(TPRO, "1")
> }
Andrew rightly points out that my proposed simple fix would create a number of new problems. A better fix is:
https:/ /code.launchpad .net/~epics- core/epics- base/+git/ prop-putf/ +merge/ 336468