X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/cffa542e4cb069b40764c889613c249e88af62d0..3a0aa1db801154916f50b1b299d5100945a3e1df:/services/nodemanager/arvnodeman/baseactor.py?ds=sidebyside diff --git a/services/nodemanager/arvnodeman/baseactor.py b/services/nodemanager/arvnodeman/baseactor.py index 0cf7c9686b..68ea97ab75 100644 --- a/services/nodemanager/arvnodeman/baseactor.py +++ b/services/nodemanager/arvnodeman/baseactor.py @@ -98,8 +98,9 @@ class WatchdogActor(pykka.ThreadingActor): self.actor_ref = TellableActorRef(self) self._later = self.actor_ref.tell_proxy() - def kill_self(self, act): + def kill_self(self, e, act): lg = getattr(self, "_logger", logging) + lg.critical("Watchdog exception", exc_info=e) lg.critical("Actor %s watchdog ping time out, killing Node Manager", act) os.kill(os.getpid(), signal.SIGKILL) @@ -107,14 +108,11 @@ class WatchdogActor(pykka.ThreadingActor): self._later.run() def run(self): - for a in self.actors: - try: + a = None + try: + for a in self.actors: a.ping().get(self.timeout) - except pykka.ActorDeadError: - pass - except pykka.Timeout: - self.kill_self(a) - return - - time.sleep(20) - self._later.run() + time.sleep(20) + self._later.run() + except Exception as e: + self.kill_self(e, a)