[stable-2.7] Fix exception when including tasks from handlers (#47307)

Set _notified_handlers for the task's _uuid that is run as a handler

Fix #47287
(cherry picked from commit 6497049)

Co-authored-by: Pablo <pablorf.dev@outlook.com>
This commit is contained in:
Pablo 2018-10-22 17:46:36 +02:00 committed by Toshio Kuratomi
parent 17cd01589a
commit ce16286dee
4 changed files with 25 additions and 1 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- "handlers - fix crash when handler task include tasks"

View file

@ -947,9 +947,12 @@ class StrategyBase:
iterator._play.handlers.append(block)
iterator.cache_block_tasks(block)
for task in block.block:
task_name = task.get_name()
display.debug("adding task '%s' included in handler '%s'" % (task_name, handler_name))
self._notified_handlers[task._uuid] = included_file._hosts[:]
result = self._do_handler_run(
handler=task,
handler_name=task.get_name(),
handler_name=task_name,
iterator=iterator,
play_context=play_context,
notified_hosts=included_file._hosts[:],

View file

@ -63,3 +63,6 @@ set +e
result="$(ansible-playbook test_handlers_any_errors_fatal.yml -e output_dir=$output_dir -i inventory.handlers -v "$@" 2>&1)"
set -e
[ ! -f $output_dir/should_not_exist_B ] || (rm -f $output_dir/should_not_exist_B && exit 1)
# https://github.com/ansible/ansible/issues/47287
[ "$(ansible-playbook test_handlers_including_task.yml -i ../../inventory -v "$@" | egrep -o 'failed=[0-9]+')" = "failed=0" ]

View file

@ -0,0 +1,16 @@
---
- name: Verify handler can include other tasks (#47287)
hosts: testhost
tasks:
- name: include a task from the tasks section
include_tasks: handlers.yml
- name: notify a handler
debug:
msg: notifying handler
changed_when: yes
notify: include a task from the handlers section
handlers:
- name: include a task from the handlers section
include_tasks: handlers.yml