summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-10-24 21:19:58 +0000
committerGerrit Code Review <review@openstack.org>2018-10-24 21:19:58 +0000
commit543c3e07cbdf3b0488f143717820a29c60e2392f (patch)
tree9a75dde63918bc3c0fd0965b13161251503a3e97
parent30818efbe302928da116e7f5725c86eab4334039 (diff)
parent367d5d9c90509af64eff224e2bef0864142c027b (diff)
downloadheat-543c3e07cbdf3b0488f143717820a29c60e2392f.tar.gz
Merge "Ignore spurious nested stack locks in convergence" into stable/ocata
-rw-r--r--heat/engine/resources/stack_resource.py15
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)