if fe/machinfo failed to initialize, metadata still tries to access it and scan cannot start
init of machinfo fails at startup:
DevError[
desc = Device fe/master/id11 is not exported (hint: try starting the device server)
origin = DeviceProxy::get_corba_name()
reason = API_DeviceNotExported
severity = ERR]
]
so machinfo object not instanciates in bliss:
TDXRD [4]: machinfo
!!! === NameError: name 'machinfo' is not defined === !!! ( for more details type cmd 'last_error' )
TDXRD [4]:
But trying a scan, it tries to use it in metadata, so scan won't start:
TDXRD [4]: sct(.1)
!!! === RuntimeError: Error in generating 'machinfo' metadata for user metadata category 'instrument' === !!! ( for more details type cmd 'last_
error' )
TDXRD [4]: last_error
Out [4]: 15/10/2021 10:29:25 Traceback (most recent call last):
File "/home/blissadm/local/bliss.git/bliss/scanning/scan_meta.py", line 204, in to_dict
values = values(scan)
File "/home/blissadm/local/bliss.git/bliss/scanning/scan_meta.py", line 308, in metadata_generator
return {metadata_name: obj.scan_metadata()}
File "/home/blissadm/local/bliss.git/bliss/controllers/machinfo.py", line 167, in scan_metadata
for attr_name, value in zip(attributes, self._read_attributes(attributes))
File "/home/blissadm/local/bliss.git/bliss/controllers/machinfo.py", line 311, in _read_attributes
dev_attrs = self.proxy.read_attributes(attr_to_read)
File "/home/blissadm/local/bliss.git/bliss/common/tango.py", line 142, in logging_call
ret = tango_func(*args)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/tango/green.py", line 195, in greener
return executor.run(fn, args, kwargs, wait=wait, timeout=timeout)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/tango/green.py", line 114, in run
return self.access(accessor, timeout=timeout)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/tango/gevent_executor.py", line 155, in access
return accessor.get(timeout=timeout)
File "src/gevent/event.py", line 329, in gevent._gevent_cevent.AsyncResult.get
File "src/gevent/event.py", line 359, in gevent._gevent_cevent.AsyncResult.get
File "src/gevent/event.py", line 347, in gevent._gevent_cevent.AsyncResult.get
File "src/gevent/event.py", line 327, in gevent._gevent_cevent.AsyncResult._raise_exception
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/gevent/_compat.py", line 65, in reraise
raise value.with_traceback(tb)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/tango/gevent_executor.py", line 68, in wrapper
return func(*args, **kwargs)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/tango/device_proxy.py", line 1534, in __DeviceProx
y__read_attributes
return self._read_attributes(*args, **kwargs)
PyTango.ConnectionFailed: DevFailed[
DevError[
desc = Device fe/master/id11 is not exported (hint: try starting the device server)
origin = DeviceProxy::get_corba_name()
reason = API_DeviceNotExported
severity = ERR]
DevError[
desc = Failed to read_attributes on device fe/master/id11, attributes SR_Mode, SR_Filling_Mode, SR_Single_Bunch_Current, SR_Curre
nt, Automatic_Mode, FE_State, SR_Refill_Countdown, SR_Operator_Mesg
origin = DeviceProxy::read_attributes()
reason = API_AttributeFailed
severity = ERR]
]
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/blissadm/local/bliss.git/bliss/common/utils.py", line 958, in wrapped_function
)(function)(*args, **kwargs)
File "/home/blissadm/local/bliss.git/bliss/common/utils.py", line 904, in wrapped_function
return function(*args, **kwargs)
File "/home/blissadm/local/bliss.git/bliss/common/utils.py", line 869, in wrapped_function
return function(*args, **kwargs)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/typeguard/__init__.py", line 1015, in wrapper
retval = func(*args, **kwargs)
File "/home/blissadm/local/bliss.git/bliss/common/scans/ct.py", line 156, in sct
scan_info=scan_info,
File "/home/blissadm/local/bliss.git/bliss/common/utils.py", line 958, in wrapped_function
)(function)(*args, **kwargs)
File "/home/blissadm/local/bliss.git/bliss/common/utils.py", line 904, in wrapped_function
return function(*args, **kwargs)
File "/home/blissadm/local/bliss.git/bliss/common/utils.py", line 869, in wrapped_function
return function(*args, **kwargs)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/site-packages/typeguard/__init__.py", line 1015, in wrapper
retval = func(*args, **kwargs)
File "/home/blissadm/local/bliss.git/bliss/common/scans/step_by_step.py", line 1093, in timescan
scan.run()
File "/home/blissadm/local/bliss.git/bliss/scanning/scan.py", line 1623, in run
self._execute_scan_runner(runner)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/contextlib.py", line 524, in __exit__
raise exc_details[1]
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/contextlib.py", line 509, in __exit__
if cb(*exc_details):
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/contextlib.py", line 377, in _exit_wrapper
return cm_exit(cm, exc_type, exc, tb)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/contextlib.py", line 119, in __exit__
next(self.gen)
File "/home/blissadm/local/bliss.git/bliss/common/cleanup.py", line 291, in capture_exceptions
raise value
File "/home/blissadm/local/bliss.git/bliss/common/cleanup.py", line 267, in capture
yield
File "/home/blissadm/local/bliss.git/bliss/scanning/scan.py", line 1668, in wrapper
yield
File "/home/blissadm/local/bliss.git/bliss/scanning/scan.py", line 1595, in run
add_context(ctx)
File "/home/blissadm/local/bliss.git/bliss/scanning/scan.py", line 1570, in add_context
yielded_value = cstack.enter_context(ctx)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/contextlib.py", line 427, in enter_context
result = _cm_type.__enter__(cm)
File "/users/blissadm/conda/miniconda/envs/bliss_dev/lib/python3.7/contextlib.py", line 112, in __enter__
return next(self.gen)
File "/home/blissadm/local/bliss.git/bliss/scanning/scan.py", line 1770, in _runctx_scan_node
self._metadata_at_scan_start()
File "/home/blissadm/local/bliss.git/bliss/scanning/scan.py", line 1322, in _metadata_at_scan_start
self._metadata_of_nonacq_controllers(META_TIMING.START)
File "/home/blissadm/local/bliss.git/bliss/scanning/scan.py", line 1373, in _metadata_of_nonacq_controllers
self._evaluate_scan_meta(self._controllers_scan_meta, timing)
File "/home/blissadm/local/bliss.git/bliss/scanning/scan.py", line 1422, in _evaluate_scan_meta
metadata = scan_meta.to_dict(self, timing=timing)
File "/home/blissadm/local/bliss.git/bliss/scanning/scan_meta.py", line 207, in to_dict
raise RuntimeError(err_msg) from e
RuntimeError: Error in generating 'machinfo' metadata for user metadata category 'instrument'
Questions:
- why trying to access in metadata a device which cannot initialize ?
- why an error in metadata gathering prevent the scan from running ?