diff --git a/lib/ansible/executor/play_iterator.py b/lib/ansible/executor/play_iterator.py index 147e46e5aa..3de07ec70c 100644 --- a/lib/ansible/executor/play_iterator.py +++ b/lib/ansible/executor/play_iterator.py @@ -342,13 +342,21 @@ class PlayIterator: state.tasks_child_state = self._set_failed_state(state.tasks_child_state) else: state.fail_state |= self.FAILED_TASKS - state.run_state = self.ITERATING_RESCUE + if state._blocks[state.cur_block].rescue: + state.run_state = self.ITERATING_RESCUE + elif state._blocks[state.cur_block].always: + state.run_state = self.ITERATING_ALWAYS + else: + state.run_state = self.ITERATING_COMPLETE elif state.run_state == self.ITERATING_RESCUE: if state.rescue_child_state is not None: state.rescue_child_state = self._set_failed_state(state.rescue_child_state) else: state.fail_state |= self.FAILED_RESCUE - state.run_state = self.ITERATING_ALWAYS + if state._blocks[state.cur_block].always: + state.run_state = self.ITERATING_ALWAYS + else: + state.run_state = self.ITERATING_COMPLETE elif state.run_state == self.ITERATING_ALWAYS: if state.always_child_state is not None: state.always_child_state = self._set_failed_state(state.always_child_state)