Open tiagocoutinho opened 3 years ago
The problem is, in this case, the client read_attributes_reply()
method will throw an error.
This is unlike the situation where only a some attributes raise erros. In this case, read_attributes_reply()
succeeds and each attribute in error can be retrieved.
IMHO, tango plugin should be protected against read_attributes_async/reply errors
Hi @tiagocoutinho , can this be reproduced with the TangoTest DS (maybe using the attribute that raises exception)?
If not: would it be possible to build a dummy DS for reproducing it?
I don't think you can do it with TangoTest.
Here is a short server:
from tango.server import Device, attribute
class Evil(Device):
def read_attr_hardware(self, attr_ids):
raise RuntimeError("don't even make an effort")
a1 = attribute(lambda x: 1)
a2 = attribute(lambda x: 2)
Evil.run_server()
I think a simple taurus form will show the problem:
taurus form evil/evil/evil/{a1,a2}
To be fair, the above taurus form example shows up but it took a couple of minutes which was more time than I took to write the above message :-)
If a tango DS is raising errors in its
read_attr_hardware()
, a taurus gui reading from it will block forever on startup.