Closed jjdmol closed 2 years ago
Thanks for the PR on this one. My current approach was to make deeper changes to fix this one, the branch remove_polling_threads is actually where my fix lives. It works but is much more difficult to track the changes. You've tested your patch and it fixes the deadlock I guess ? if so I'll merge it and we can check what to do with my branch later. Thanks again!
Apologies. Unfortunately I haven't a setup to test this yet, as I use the SKA docker images for hdbpp, which are high level. While there is good reason to assume it works (it seems this code was accidentally removed at some point long ago), it's definitely a good idea to check.
I could look at building such a setup, but was hoping it's trivial to see by those who already have one...
no apologies necessary, we'll check!
I have a test setup now, the fix does work. That is, es.attributeremove() does now remove the attribute. It logs the events of doing so etc, and seems to continue just fine.
When we remove an attribute from the eventsubscriber, we notice hdbppes-srv freezing up immediately (becoming unresponsive towards Tango), see the log below. The
SharedData::put_signal_property
function is entered, but is never exited.I don't have access to debug symbols, making debugging hard, but by code inspection, it seems that perhaps in
SharedData
:veclock.writerIn()
lock taken inremove
at is never released (at function end and the thrown exception?)put_signal_property
to freeze up onceveclock.readerIn()
is called.hdbppes-srv debug log after calling
es_proxy.attributeremove()
from Python: