diff options
author | Zuul <zuul@review.openstack.org> | 2018-10-24 21:19:58 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-10-24 21:19:58 +0000 |
commit | 543c3e07cbdf3b0488f143717820a29c60e2392f (patch) | |
tree | 9a75dde63918bc3c0fd0965b13161251503a3e97 | |
parent | 30818efbe302928da116e7f5725c86eab4334039 (diff) | |
parent | 367d5d9c90509af64eff224e2bef0864142c027b (diff) | |
download | heat-543c3e07cbdf3b0488f143717820a29c60e2392f.tar.gz |
Merge "Ignore spurious nested stack locks in convergence" into stable/ocata
-rw-r--r-- | heat/engine/resources/stack_resource.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/heat/engine/resources/stack_resource.py b/heat/engine/resources/stack_resource.py index 9ffd1a700..c61ce4a4a 100644 --- a/heat/engine/resources/stack_resource.py +++ b/heat/engine/resources/stack_resource.py @@ -408,12 +408,19 @@ class StackResource(resource.Resource): if status == self.IN_PROGRESS: return False elif status == self.COMPLETE: - ret = stack_lock.StackLock.get_engine_id( - self.context, self.resource_id) is None - if ret: + # For operations where we do not take a resource lock + # (i.e. legacy-style), check that the stack lock has been + # released before reporting completeness. + done = ((self.stack.convergence and + not self.abandon_in_progress and + action in {self.ADOPT, self.CREATE, self.UPDATE, + self.ROLLBACK, self.DELETE}) or + stack_lock.StackLock.get_engine_id( + self.context, self.resource_id) is None) + if done: # Reset nested, to indicate we changed status self._nested = None - return ret + return done elif status == self.FAILED: raise exception.ResourceFailure(status_reason, self, action=action) |