linear strategy: don't look at tasks from the next block
This commit is contained in:
parent
11b55be5bb
commit
9ac9c75d76
1 changed files with 22 additions and 9 deletions
|
@ -63,19 +63,32 @@ class StrategyModule(StrategyBase):
|
|||
num_rescue = 0
|
||||
num_always = 0
|
||||
|
||||
lowest_cur_block = len(iterator._blocks)
|
||||
|
||||
display.debug("counting tasks in each state of execution")
|
||||
for (k, v) in iteritems(host_tasks):
|
||||
if v is None:
|
||||
continue
|
||||
host_tasks_to_run = [(host, state_task)
|
||||
for host, state_task in iteritems(host_tasks)
|
||||
if state_task and state_task[1]]
|
||||
# Drop noops
|
||||
host_tasks_to_run = [
|
||||
(host, (state, task))
|
||||
for host, (state, task) in host_tasks_to_run
|
||||
if task.action != 'meta' or task.args.get('_raw_params') != 'noop'
|
||||
]
|
||||
|
||||
if host_tasks_to_run:
|
||||
lowest_cur_block = min(
|
||||
(s.cur_block for h, (s, t) in host_tasks_to_run
|
||||
if s.run_state != PlayIterator.ITERATING_COMPLETE))
|
||||
else:
|
||||
# empty host_tasks_to_run will just run till the end of the function
|
||||
# without ever touching lowest_cur_block
|
||||
lowest_cur_block = None
|
||||
|
||||
for (k, v) in host_tasks_to_run:
|
||||
(s, t) = v
|
||||
if t is None:
|
||||
continue
|
||||
|
||||
if s.cur_block < lowest_cur_block and s.run_state != PlayIterator.ITERATING_COMPLETE:
|
||||
lowest_cur_block = s.cur_block
|
||||
if s.cur_block > lowest_cur_block:
|
||||
# Not the current block, ignore it
|
||||
continue
|
||||
|
||||
if s.run_state == PlayIterator.ITERATING_SETUP:
|
||||
num_setups += 1
|
||||
|
|
Loading…
Reference in a new issue