Skip to content

Rework tango hardware object

Valentin Valls requested to merge rework-tango-polling into master

This MR was an attempt to fix deadlock related to Tango in the CI.

Finally it is mostly a small refactoring of the TangoObject without changing the logic.

  • Create connect/disconnect functions
  • Typo on private functions
  • Protect push_even from exception (in case of implementation error nothing was catched)
  • Added documentation
  • Setup rel_change if needed for server-side polling (enabling polling period was not enough)
  • Workaround to fix deadlock

Workaround to fix the deadlock

The deadlock appears when a DeviceProxy is destroyed and when a similar DeviceProxy receive an event.

https://gitlab.com/tango-controls/pytango/-/issues/315#note_972732865

This will be fixed in tango 9.4.x, but there is no solution for now.

Daiquiri uses 2 DeviceProxy

  • One for the fixture, provided by BLISS, to wait for the device when creating it
  • The other one for the Daiquiri application

So the problem is probably between 2 tests. When the proxy of a previous fixture is about to be released.

There is no way to wait for the release, because there is a bug with ref count (https://gitlab.com/tango-controls/pytango/-/issues/443).

So the workaround for now is just to not release any proxy. And wait for the fix in tango (524a0dfc)

Edited by Valentin Valls

Merge request reports