X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d3be8a76e5d9a921fbb7798cb0a705b918d20add..10402f74ccdae453ae353c389a02c0415adcf1e7:/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py diff --git a/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py b/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py index 8a397dcc85..c5dd1adef1 100644 --- a/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py +++ b/services/nodemanager/arvnodeman/computenode/dispatch/__init__.py @@ -1,4 +1,7 @@ #!/usr/bin/env python +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 from __future__ import absolute_import, print_function @@ -237,6 +240,9 @@ class ComputeNodeShutdownActor(ComputeNodeStateChangeBase): return super(ComputeNodeShutdownActor, self)._finished() def cancel_shutdown(self, reason, **kwargs): + if self.cancel_reason is not None: + # already cancelled + return self.cancel_reason = reason self._logger.info("Shutdown cancelled: %s.", reason) self._finished(success_flag=False) @@ -254,6 +260,9 @@ class ComputeNodeShutdownActor(ComputeNodeStateChangeBase): @_cancel_on_exception def shutdown_node(self): + if self.cancel_reason is not None: + # already cancelled + return if self.cancellable: self._logger.info("Checking that node is still eligible for shutdown") eligible, reason = self._monitor.shutdown_eligible().get() @@ -296,6 +305,7 @@ class ComputeNodeUpdateActor(config.actor_class, RetryMixin): RetryMixin.__init__(self, 1, max_retry_wait, None, cloud_factory(), timer_actor) self._cloud = cloud_factory() + self._later = self.actor_ref.tell_proxy() def _set_logger(self): self._logger = logging.getLogger("%s.%s" % (self.__class__.__name__, self.actor_urn[33:]))