Skip to content

Resolve "CI: test_spectrometer_cartesian can fail"

Closes #3648 (closed)

BraggCalcController instances were not closed upon closing the session.

Before this PR BraggCalcController instances were closed upon garbage collection

CLOSE <bliss.controllers.spectrometers.spectro_base.BraggCalcController object at 0x7f2bb364b760>
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 1150, in __del__
    self.__close__()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 1160, in __close__
    self.detector.__close__()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 420, in __close__
    super().__close__()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 293, in __close__
    self._bragg_calc_controller.close()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 150, in close
    traceback.print_stack()

After this PR BraggCalcController instances are closed explicitly when closing the session

CLOSE <bliss.controllers.spectrometers.spectro_base.BraggCalcController object at 0x7fa5b775b5b0>
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pytest/__main__.py", line 5, in <module>
    raise SystemExit(pytest.console_main())
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/config/__init__.py", line 189, in console_main
    code = main()
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/config/__init__.py", line 166, in main
    ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main(
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/main.py", line 316, in pytest_cmdline_main
    return wrap_session(config, _main)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/main.py", line 269, in wrap_session
    session.exitstatus = doit(config, session) or 0
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/main.py", line 323, in _main
    config.hook.pytest_runtestloop(session=session)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/main.py", line 348, in pytest_runtestloop
    item.config.hook.pytest_runtest_protocol(item=item, nextitem=nextitem)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 114, in pytest_runtest_protocol
    runtestprotocol(item, nextitem=nextitem)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 134, in runtestprotocol
    reports.append(call_and_report(item, "teardown", log, nextitem=nextitem))
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 222, in call_and_report
    call = call_runtest_hook(item, when, **kwds)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 261, in call_runtest_hook
    return CallInfo.from_call(
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 341, in from_call
    result: Optional[TResult] = func()
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 262, in <lambda>
    lambda: ihook(item=item, **kwds), when=when, reraise=reraise
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_hooks.py", line 265, in __call__
    return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_manager.py", line 80, in _hookexec
    return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/pluggy/_callers.py", line 39, in _multicall
    res = hook_impl.function(*args)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 182, in pytest_runtest_teardown
    item.session._setupstate.teardown_exact(nextitem)
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/runner.py", line 526, in teardown_exact
    fin()
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/fixtures.py", line 686, in <lambda>
    subrequest.node.addfinalizer(lambda: fixturedef.finish(request=subrequest))
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/fixtures.py", line 1031, in finish
    func()
  File "/home/denolf/miniconda3/envs/bliss_dev/lib/python3.9/site-packages/_pytest/fixtures.py", line 918, in _teardown_yield_fixture
    next(it)
  File "/home/denolf/projects/bliss/tests/conftest.py", line 627, in default_session
    default_session.close()
  File "/home/denolf/projects/bliss/bliss/common/session.py", line 1016, in close
    obj.__close__()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 1143, in __close__
    self.close()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 1150, in close
    ana.close()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 413, in close
    super().close()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 286, in close
    self._bragg_calc_controller.close()
  File "/home/denolf/projects/bliss/bliss/controllers/spectrometers/spectro_base.py", line 150, in close
    traceback.print_stack()
Edited by Wout De Nolf

Merge request reports