Environments can be left in an inconsistent state if update does not finish normally
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Heat |
Fix Released
|
High
|
Zane Bitter |
Bug Description
The fix for bug 1477812 fixes the case where a stack update fails part way through, leaving some old and some new resources behind, by merging the old and new environments and storing them with the stack, in order to try to keep the state consistent. (It's not entirely successful at that - see bug 1543685 - but pretty close).
However, the environment is updated only *after* the update has finished. This means that if the update process is not run to completion, we're back where we started. An example would be if heat-engine were restarted during the update.
One easy-ish improvement would be to put the code inside a 'finally' block, so that if things at least exit in an orderly fashion (by raising an exit exception in each thread), the code would still run.
That would still leave a gap in the solution in cases where the exit is not orderly (e.g. kill -9). To completely resolve this, we likely need to write the merged environment before the update starts, or at least at the same time as the first resource is updated.
Changed in heat: | |
assignee: | Zane Bitter (zaneb) → nobody |
status: | In Progress → Triaged |
Changed in heat: | |
status: | Triaged → Fix Released |
assignee: | nobody → Zane Bitter (zaneb) |
Fix proposed to branch: master /review. openstack. org/278806
Review: https:/