Allow resuming stage to be interrupted.

This commit is contained in:
Joshua Harlow
2013-05-17 12:07:44 -07:00
parent 3bc9183ee9
commit c4c03f8ca3

View File

@@ -130,9 +130,13 @@ class Workflow(object):
self._change_state(context, states.STARTED)
task_order = self.order()
last_task = 0
was_interrupted = False
if result_fetcher:
self._change_state(context, states.RESUMING)
for (i, task) in enumerate(task_order):
if self.state == states.INTERRUPTED:
was_interrupted = True
break
(has_result, result) = result_fetcher(self, task)
if not has_result:
break
@@ -152,8 +156,10 @@ class Workflow(object):
except Exception as e:
self._perform_reconcilation(context, task, e)
if was_interrupted:
return
self._change_state(context, states.RUNNING)
was_interrupted = False
for task in task_order[last_task:]:
if self.state == states.INTERRUPTED:
was_interrupted = True