From 5034bc10afb736eedca0cb4e0503652711008e23 Mon Sep 17 00:00:00 2001 From: huangtianhua Date: Sat, 24 Jun 2017 18:44:59 +0800 Subject: [PATCH] Get cancellation grace period correctly This changes the logic of getting cancellation grace period of task runner before closing it: to move the liveness check into the cancel_all() method in the scheduler rather than ask the resource if it's IN_PROGRESS. Change-Id: Ia2a03de227ff15cdce1b3dbb6cd6bff6c5a50a15 Partial-Bug: 1693495 (cherry picked from commit 8c62e96947c70d577a9935a0c3a7b5a92efcbf5f) --- heat/engine/resource.py | 3 --- heat/engine/scheduler.py | 5 ++++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/heat/engine/resource.py b/heat/engine/resource.py index 6d68f2861..654880b4e 100644 --- a/heat/engine/resource.py +++ b/heat/engine/resource.py @@ -1062,9 +1062,6 @@ class Resource(object): ) def cancel_grace_period(self): - if self.status != self.IN_PROGRESS: - return None - canceller = getattr(self, 'handle_%s_cancel' % self.action.lower(), None) diff --git a/heat/engine/scheduler.py b/heat/engine/scheduler.py index 37e02a30f..d6e17568f 100644 --- a/heat/engine/scheduler.py +++ b/heat/engine/scheduler.py @@ -473,7 +473,10 @@ class DependencyTaskGroup(object): return grace_period for k, r in six.iteritems(self._runners): - gp = get_grace_period(k) + if not r.started() or r.done(): + gp = None + else: + gp = get_grace_period(k) try: r.cancel(grace_period=gp) except Exception as ex: