We probably already use explicit transactions for all updates including making them subtransactions when required ex.[1].
I tried the reproducer and hit a different issue which moved the stack to DELETE_FAILED.
2016-06-22 07:36:42.966 13243 INFO heat.engine.stack [req-e1cb88b8-6b9d-4d0f-a473-14ea0e35a675 - demo - default default] Stack DELETE FAILED (test_stack-rg-zk273ddlyrxh): Resource DELETE failed: TimeoutError: resources[43]: QueuePool limit of size 5 overflow 64 reached, connection timed out, timeout 30
[1] https://github.com/openstack/heat/blob/master/heat/db/sqlalchemy/api.py#L272
We probably already use explicit transactions for all updates including making them subtransactions when required ex.[1].
I tried the reproducer and hit a different issue which moved the stack to DELETE_FAILED.
2016-06-22 07:36:42.966 13243 INFO heat.engine.stack [req-e1cb88b8- 6b9d-4d0f- a473-14ea0e35a6 75 - demo - default default] Stack DELETE FAILED (test_stack- rg-zk273ddlyrxh ): Resource DELETE failed: TimeoutError: resources[43]: QueuePool limit of size 5 overflow
64 reached, connection timed out, timeout 30
[1] https:/ /github. com/openstack/ heat/blob/ master/ heat/db/ sqlalchemy/ api.py# L272