From f8440d38a4ff7d180d1445d20bd0da6fdf313831 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Fri, 7 Jun 2024 17:08:31 +0200 Subject: [PATCH] fix 2 issues with starting stopping - secnode devices were not disconnected before stopping leading to error messages - target of secnodes not properly updated --- devices.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/devices.py b/devices.py index cbd9acf..a78b651 100644 --- a/devices.py +++ b/devices.py @@ -165,8 +165,8 @@ class FrappyConfig(Device): self._back_to_normal = None while not self._shutdown_event.wait(1): busy = session.daemon_device._controller.status >= 0 - if busy and cnt < 10: - # check only every 10 sec when busy + if self._restarting or (busy and cnt < 10): + # do not check when restarting and check only every 10 sec when busy cnt += 1 continue if not busy and self._back_to_normal: @@ -308,10 +308,9 @@ class FrappyConfig(Device): used_cfg[cfg] = service for service, cfginfo in reversed(list(new_cfg.items())): - if cfginfo != all_cfg.get(service, ''): - secnode = secnodes[service] - if secnode: - secnode('') # stop previous frappy server + secnode = secnodes[service] + if secnode: + secnode('') # stop previous frappy server if new_cfg: for service, cfginfo in new_cfg.items(): @@ -735,7 +734,6 @@ class FrappyNode(SecNodeDevice, Moveable): self.__log_recording = () def nodeStateChange(self, online, state): - # self.log.info('NODE %r %r', online, state) if online: super().nodeStateChange(online, state) if self._cfgvalue is None: @@ -759,7 +757,7 @@ class FrappyNode(SecNodeDevice, Moveable): if not running_cfg or running_cfg == self.target: super().descriptiveDataChange(module, description) else: - self._disconnect(True) + self._disconnect(keeptarget=True) self._cfgvalue = running_cfg self._set_status(status.ERROR, 'cfg changed') @@ -791,7 +789,7 @@ class FrappyNode(SecNodeDevice, Moveable): if cfg != running_cfg: self.disable() if running_cfg: - self._disconnect() + self._disconnect(keeptarget=not cfg) session.log.info('stop frappy_%s %r %r', self.service, running_cfg, cfg) fm.do_stop(ins, self.service) self._setROParam('target', cfg) @@ -815,12 +813,12 @@ class FrappyNode(SecNodeDevice, Moveable): else: uri = cfg if uri != self.uri: - self.uri = '' # disconnect + self._disconnect(keeptarget=True) if uri: if is_cfg: session.log.info('start frappy_%s', self.service) fm.do_start(ins, self.service, cfg, logger=self.log) - self.uri = uri # connect + self.uri = uri # connect (or disconnect) self._cfgvalue = cfg if self._cache: self._cache.put(self, 'value', cfg)