taurus-org / taurus

Moved to https://gitlab.com/taurus-org/taurus
http://taurus-scada.org
43 stars 46 forks source link

Taurus form gets stuck on the first model #1144

Open gjover opened 3 years ago

gjover commented 3 years ago

Taurus form get's stuck on the first model when this model is an attribute in timeout error.

This problem occurred reading an attribute from an electrometer DS which hardware was disconnected.

Let's be (a/b/c/timeout_attr) and (a/b/c/normal) two attributes, the first producing timeout errors.

The taurus form gets stuck on the first model and don't show the taurus form taurus form a/b/c/timeout_attr a/b/c/normal

However, swapping the models, the taurus form shows up, with the second attribute in grey taurus form a/b/c/normal a/b/c/timeout_attr

If the first model is an eval, taurus form keeps getting stuck on the timeout attribute taurus form eval:1 a/b/c/timeout_attr

It seams to be related with the polling subscription. The error is:

taurus form tango://tbl11:10000/bl11/di/emet-01/i1 tango://tbl11:10000/bl11/di/emet-02/i1
MainThread     WARNING  2020-08-12 11:00:11,828 TaurusRootLogger: <frozen importlib._bootstrap>:222: DeprecationWarning: taurus.external.qt.Qwt5 is deprecated since 4.5

TimerLoop 1    ERROR    2020-08-12 11:00:13,220 TaurusPollingTimer[3000]: poll_reply error DevFailed(args = (DevError(desc = 'timeout: timed out\n', origin = '  File "PyAlbaEm.py", line 133, in always_executed_hook\n    self.checkAlbaEmState()\n  File "PyAlbaEm.py", line 1796, in checkAlbaEmState\n    state = self.AlbaElectr.getState()\n  File "/homelocal/sicilia/lib/python/site-packages/albaemlib/albaemlib.py", line 1204, in getState\n    answer = self.ask(command)\n  File "/homelocal/sicilia/lib/python/site-packages/albaemlib/albaemlib.py", line 115, in ask\n    answer = self.sock.recv(size)\n', reason = 'PyDs_PythonError', severity = tango._tango.ErrSeverity.ERR), DevError(desc = 'Failed to execute read_attribute_asynch on device bl11/di/emet-01\nAttribute(s): i1', origin = 'DeviceProxy::read_attributes_reply()', reason = 'API_AttributeFailed', severity = tango._tango.ErrSeverity.ERR)))
cpascual commented 3 years ago

I confirmed this together with @gjover . For the moment, only reproduced with an electrometer DS connected to switched-off hardware.

At a first glance, it looks like the problem has to do with the initialization of polling/events in tango attributes

It would be nice to try reproducing it with a pure software DS simulating the timeouts.