Skip to content

[Bug] Remote Modules - Broken reload of remote module on client #61

Description

@LukePiewalker

Version

Development

What is affected by the bug?

Reloading or deactivating of a remote (hardware) module on the client side results in errors.
This means remote (hardware) modules cannot be reloaded or deactivated on the client side which translates to also "reload configuration" not working on the client when remote modules are configured.

When does the bug occur?

Reloading of a remote (hardware) module on the client side causes an AttributeError while trying to stop the poll timer (see Error trace below) of the manager which in turn means also "reload current configuration" is not working.

After pressing reload, the remote module is still listed as "idle", hence active in the manager GUI of the client side. Also the remote module seems to be still accessible afterwards.

How do we replicate the issue?

  • Set up a remote module i.e. a simple switch_dummy with which I tested it (did only use the SwitchDummy, not the SwitchInterfuse) on one machine (Win10)
  • Connecting to the remote module from another machine (Win10)
  • Pressing "Reload" or "Deactivate" on the client machine

Expected behavior

Module reloads or deactivates without causing the error and breaking functionality, such as reloading qudi.

Relevant log output

_get_exception_class.<locals>.Derived: Failed to disconnect signal sigStateChanged(PyObject).

========= Remote Traceback (1) =========
Traceback (most recent call last):
  File "C:\Anaconda3\envs\qudi-env\lib\site-packages\rpyc\core\protocol.py", line 324, in _dispatch_request
    res = self._HANDLERS[handler](self, *args)
  File "C:\Anaconda3\envs\qudi-env\lib\site-packages\rpyc\core\protocol.py", line 609, in _handle_call
    return obj(*args, **dict(kwargs))
RuntimeError: Failed to disconnect signal sigStateChanged(PyObject).

Traceback (most recent call last):

  File "C:\Users\LukasAntoniuk\PycharmProjects\qudi-core\src\qudi\core\modulemanager.py", line 601, in deactivate
    self.__poll_timer.stop()

AttributeError: 'NoneType' object has no attribute 'stop'


During handling of the above exception, another exception occurred:


Traceback (most recent call last):

  File "C:\Users\LukasAntoniuk\PycharmProjects\qudi-core\src\qudi\core\modulemanager.py", line 208, in deactivate_module
    self._modules[module_name].deactivate()

  File "C:\Users\LukasAntoniuk\PycharmProjects\qudi-core\src\qudi\core\modulemanager.py", line 604, in deactivate
    self._instance.module_state.sigStateChanged.disconnect(self._state_change_callback)

  File "C:\ProgramData\Anaconda3\envs\qudi-env\lib\site-packages\rpyc\core\netref.py", line 240, in __call__
    return syncreq(_self, consts.HANDLE_CALL, args, kwargs)

  File "C:\ProgramData\Anaconda3\envs\qudi-env\lib\site-packages\rpyc\core\netref.py", line 63, in syncreq
    return conn.sync_request(handler, proxy, *args)

  File "C:\ProgramData\Anaconda3\envs\qudi-env\lib\site-packages\rpyc\core\protocol.py", line 490, in sync_request
    return _async_res.value

  File "C:\ProgramData\Anaconda3\envs\qudi-env\lib\site-packages\rpyc\core\async_.py", line 108, in value
    raise self._obj

Additional Comments

Did test with up do date development version of qudi-core and qudi-iqo-modules, as well as freshly updated packages on host and client. Can provide package versions if required.

Contact Details

lukas.antoniuk@uni-ulm.de

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions