APS-4ID-POLAR / APS-4ID-POLAR/ipython-polar

Scaler timeout...

Open
#125 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1
Forks
3
PR merge metrics
No merged PRs in 30d

Description

```python
[TerminalIPythonApp] WARNING | Unknown error in handling startup files:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in __get__(self, instance, owner)
222 try:
--> 223 return instance._signals[self.attr]
224 except KeyError:

KeyError: 'channels'

During handling of the above exception, another exception occurred:

KeyError Traceback (most recent call last)
~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in __get__(self, instance, owner)
222 try:
--> 223 return instance._signals[self.attr]
224 except KeyError:

KeyError: 'chan03'

During handling of the above exception, another exception occurred:

TimeoutError Traceback (most recent call last)
~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/signal.py in _get_with_timeout(self, pv, timeout, connection_timeout, as_string, form, use_monitor)
1114 try:
-> 1115 self.wait_for_connection(timeout=connection_timeout)
1116 except TimeoutError as err:

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/signal.py in wait_for_connection(self, timeout)
1493 timeout = self.connection_timeout
-> 1494 self._ensure_connected(self._read_pv, self._write_pv, timeout=timeout)
1495

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/signal.py in _ensure_connected(self, timeout, *pvs)
1045 if not pv.wait_for_connection(timeout=timeout):
-> 1046 raise TimeoutError(f"{pv.pvname} could not connect within "
1047 f"{float(timeout):.3}-second timeout.")

TimeoutError: 4id:scaler1.NM3 could not connect within 5.0-second timeout.

The above exception was the direct cause of the following exception:

ConnectionTimeoutError Traceback (most recent call last)
~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/IPython/core/shellapp.py in _exec_file(self, fname, shell_futures)
376 else:
377 # default to python, even without extension
--> 378 self.shell.safe_execfile(full_filename,
379 self.shell.user_ns,
380 shell_futures=shell_futures,

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/IPython/core/interactiveshell.py in safe_execfile(self, fname, exit_ignore, raise_exceptions, shell_futures, *where)
2755 try:
2756 glob, loc = (where + (None, ))[:2]
-> 2757 py3compat.execfile(
2758 fname, glob, loc,
2759 self.compile if shell_futures else None)

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/IPython/utils/py3compat.py in execfile(fname, glob, loc, compiler)
166 with open(fname, 'rb') as f:
167 compiler = compiler or compile
--> 168 exec(compiler(f.read(), fname, 'exec'), glob, loc)
169
170 # Refactor print statements in doctests.

~/.ipython/profile_bluesky/startup/00-instrument.py in
4 """
5
----> 6 from instrument.collection import *
7
8 # show_ophyd_symbols()

~/.ipython/profile_bluesky/startup/instrument/collection.py in
12
13 from .framework import *
---> 14 from .devices import *
15 from .callbacks import *
16 from .plans import *

~/.ipython/profile_bluesky/startup/instrument/devices/__init__.py in
11 from .ge_controller import *
12 from .huber import *
---> 13 from .ion_chambers import *
14 from .kepko import *
15 from .lakeshores import *

~/.ipython/profile_bluesky/startup/instrument/devices/ion_chambers.py in
9 from ..framework import sd
10 from .srs_amplifiers import PreAmpDevice
---> 11 from .scaler import scalerd
12 from ..session_logs import logger
13 logger.info(__file__)

~/.ipython/profile_bluesky/startup/instrument/devices/scaler.py in
201
202
--> 203 scalerd = LocalScalerCH('4id:scaler1', name='scalerd',
204 labels=('detectors',))
205 scalerd.monitor = 'Time'

~/.ipython/profile_bluesky/startup/instrument/devices/scaler.py in __init__(self, *args, **kwargs)
92
93 def __init__(self, *args, **kwargs):
---> 94 super().__init__(*args, **kwargs)
95 self._monitor = self.channels.chan01 # Time is the default monitor.
96

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in __init__(self, prefix, name, kind, read_attrs, configuration_attrs, parent, **kwargs)
757 with do_not_wait_for_lazy_connection(self):
758 # Instantiate non-lazy signals and lazy signals with subscriptions
--> 759 [getattr(self, attr) for attr, cpt in self._sig_attrs.items()
760 if not cpt.lazy or cpt._subscriptions]
761

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in (.0)
757 with do_not_wait_for_lazy_connection(self):
758 # Instantiate non-lazy signals and lazy signals with subscriptions
--> 759 [getattr(self, attr) for attr, cpt in self._sig_attrs.items()
760 if not cpt.lazy or cpt._subscriptions]
761

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in __get__(self, instance, owner)
223 return instance._signals[self.attr]
224 except KeyError:
--> 225 return instance._instantiate_component(self.attr)
226
227 def __set__(self, instance, owner):

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in _instantiate_component(self, attr)
1216
1217 try:
-> 1218 self._signals[attr] = cpt.create_component(self)
1219 sig = self._signals[attr]
1220 for event_type, functions in cpt._subscriptions.items():

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in create_component(self, instance)
174 if self.suffix is not None:
175 pv_name = self.maybe_add_prefix(instance, 'suffix', self.suffix)
--> 176 cpt_inst = self.cls(pv_name, parent=instance, **kwargs)
177 else:
178 cpt_inst = self.cls(parent=instance, **kwargs)

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in __init__(self, prefix, name, kind, read_attrs, configuration_attrs, parent, **kwargs)
757 with do_not_wait_for_lazy_connection(self):
758 # Instantiate non-lazy signals and lazy signals with subscriptions
--> 759 [getattr(self, attr) for attr, cpt in self._sig_attrs.items()
760 if not cpt.lazy or cpt._subscriptions]
761

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in (.0)
757 with do_not_wait_for_lazy_connection(self):
758 # Instantiate non-lazy signals and lazy signals with subscriptions
--> 759 [getattr(self, attr) for attr, cpt in self._sig_attrs.items()
760 if not cpt.lazy or cpt._subscriptions]
761

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in __get__(self, instance, owner)
223 return instance._signals[self.attr]
224 except KeyError:
--> 225 return instance._instantiate_component(self.attr)
226
227 def __set__(self, instance, owner):

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in _instantiate_component(self, attr)
1216
1217 try:
-> 1218 self._signals[attr] = cpt.create_component(self)
1219 sig = self._signals[attr]
1220 for event_type, functions in cpt._subscriptions.items():

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/device.py in create_component(self, instance)
174 if self.suffix is not None:
175 pv_name = self.maybe_add_prefix(instance, 'suffix', self.suffix)
--> 176 cpt_inst = self.cls(pv_name, parent=instance, **kwargs)
177 else:
178 cpt_inst = self.cls(parent=instance, **kwargs)

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/scaler.py in __init__(self, prefix, ch_num, **kwargs)
78
79 super().__init__(prefix, **kwargs)
---> 80 self.match_name()
81
82 def match_name(self):

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/scaler.py in match_name(self)
81
82 def match_name(self):
---> 83 self.s.name = self.chname.get()
84
85

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/signal.py in get(self, as_string, timeout, connection_timeout, form, use_monitor, **kwargs)
1177 use_monitor = self._auto_monitor
1178
-> 1179 info = self._get_with_timeout(
1180 self._read_pv, timeout, connection_timeout, as_string, form, use_monitor
1181 )

~/.conda/envs/bluesky_2021_2/lib/python3.8/site-packages/ophyd/signal.py in _get_with_timeout(self, pv, timeout, connection_timeout, as_string, form, use_monitor)
1115 self.wait_for_connection(timeout=connection_timeout)
1116 except TimeoutError as err:
-> 1117 raise ConnectionTimeoutError(
1118 f"Failed to connect to {pv.pvname} "
1119 f"within {connection_timeout:.2f} sec") from err

ConnectionTimeoutError: Failed to connect to 4id:scaler1.NM3 within 5.00 sec
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with ~/.ipython/profile_bluesky/startup/instrument/devices/scaler.py, especially LocalScalerCH initialization and the 4id:scaler1.NM3 connection shown in the traceback. Reproduce the startup failure and determine the expected behavior for the scaler; done means startup no longer raises ConnectionTimeoutError.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.