Fix triggering parent's always with run_once set (#35464)
This commit is contained in:
parent
2293252e52
commit
7c83f006c0
2 changed files with 16 additions and 1 deletions
|
@ -389,9 +389,10 @@ class StrategyModule(StrategyBase):
|
|||
|
||||
# if any_errors_fatal and we had an error, mark all hosts as failed
|
||||
if any_errors_fatal and (len(failed_hosts) > 0 or len(unreachable_hosts) > 0):
|
||||
dont_fail_states = frozenset([iterator.ITERATING_RESCUE, iterator.ITERATING_ALWAYS])
|
||||
for host in hosts_left:
|
||||
(s, _) = iterator.get_next_task_for_host(host, peek=True)
|
||||
if s.run_state != iterator.ITERATING_RESCUE or \
|
||||
if s.run_state not in dont_fail_states or \
|
||||
s.run_state == iterator.ITERATING_RESCUE and s.fail_state & iterator.FAILED_RESCUE != 0:
|
||||
self._tqm._failed_hosts[host.name] = True
|
||||
result |= self._tqm.RUN_FAILED_BREAK_PLAY
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
tasks_run_after_failure: false
|
||||
rescue_run_after_failure: false
|
||||
always_run_after_failure: false
|
||||
nested_block_fail_always: false
|
||||
tasks:
|
||||
- block:
|
||||
- name: set block tasks run flag
|
||||
|
@ -46,6 +47,18 @@
|
|||
# always_run_after_failure: true
|
||||
- meta: clear_host_errors
|
||||
|
||||
# https://github.com/ansible/ansible/issues/35148
|
||||
- block:
|
||||
- block:
|
||||
- name: EXPECTED FAILURE test triggering always by failing in nested block with run_once set
|
||||
fail:
|
||||
run_once: true
|
||||
always:
|
||||
- name: set block fail always run flag
|
||||
set_fact:
|
||||
nested_block_fail_always: true
|
||||
- meta: clear_host_errors
|
||||
|
||||
post_tasks:
|
||||
- assert:
|
||||
that:
|
||||
|
@ -56,6 +69,7 @@
|
|||
- not tasks_run_after_failure
|
||||
- not rescue_run_after_failure
|
||||
- not always_run_after_failure
|
||||
- nested_block_fail_always
|
||||
- debug: msg="TEST COMPLETE"
|
||||
|
||||
- name: block with includes
|
||||
|
|
Loading…
Reference in a new issue