[stable-2.19] Expose ansible_failed_task in rescue for explicit flush_handlers (#85687) (#85707)

Fixes #85682

(cherry picked from commit c5ddc93767)
pull/85788/head
Martin Krizek 3 months ago committed by GitHub
parent 9aea625f63
commit 764070de69
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,2 @@
bugfixes:
- The ``ansible_failed_task`` variable is now correctly exposed in a rescue section, even when a failing handler is triggered by the ``flush_handlers`` task in the corresponding ``block`` (https://github.com/ansible/ansible/issues/85682)

@ -574,7 +574,7 @@ class PlayIterator:
Given the current HostState state, determines if the current block, or any child blocks, Given the current HostState state, determines if the current block, or any child blocks,
are in rescue mode. are in rescue mode.
""" """
if state.run_state == IteratingStates.TASKS and state.get_current_block().rescue: if state.run_state in (IteratingStates.TASKS, IteratingStates.HANDLERS) and state.get_current_block().rescue:
return True return True
if state.tasks_child_state is not None: if state.tasks_child_state is not None:
return self.is_any_block_rescuing(state.tasks_child_state) return self.is_any_block_rescuing(state.tasks_child_state)

@ -0,0 +1,16 @@
- hosts: localhost
gather_facts: false
tasks:
- block:
- debug:
changed_when: true
notify: h1
- meta: flush_handlers
rescue:
- assert:
that:
- ansible_failed_task is defined
handlers:
- name: h1
fail:

@ -230,3 +230,5 @@ ansible-playbook handler_notify_earlier_handler.yml "$@" 2>&1 | tee out.txt
ANSIBLE_DEBUG=1 ansible-playbook tagged_play.yml --skip-tags the_whole_play "$@" 2>&1 | tee out.txt ANSIBLE_DEBUG=1 ansible-playbook tagged_play.yml --skip-tags the_whole_play "$@" 2>&1 | tee out.txt
[ "$(grep out.txt -ce 'META: triggered running handlers')" = "0" ] [ "$(grep out.txt -ce 'META: triggered running handlers')" = "0" ]
[ "$(grep out.txt -ce 'handler_ran')" = "0" ] [ "$(grep out.txt -ce 'handler_ran')" = "0" ]
ansible-playbook rescue_flush_handlers.yml "$@"

Loading…
Cancel
Save