Fix some more handler issues
* Only notify handlers when the task is changed * Don't run handlers on hosts which have failed
This commit is contained in:
parent
2576f480fd
commit
ec4d1b11df
2 changed files with 2 additions and 2 deletions
|
@ -123,7 +123,7 @@ class ResultProcess(multiprocessing.Process):
|
|||
self._send_result(('host_task_skipped', result))
|
||||
else:
|
||||
# if this task is notifying a handler, do it now
|
||||
if result._task.notify:
|
||||
if result._task.notify and result._result.get('changed', False):
|
||||
# The shared dictionary for notified handlers is a proxy, which
|
||||
# does not detect when sub-objects within the proxy are modified.
|
||||
# So, per the docs, we reassign the list so the proxy picks up and
|
||||
|
|
|
@ -380,7 +380,7 @@ class StrategyBase:
|
|||
break
|
||||
self._tqm.send_callback('v2_playbook_on_handler_task_start', handler)
|
||||
for host in self._notified_handlers[handler_name]:
|
||||
if not handler.has_triggered(host):
|
||||
if not handler.has_triggered(host) and host.name not in self._tqm._failed_hosts:
|
||||
task_vars = self._variable_manager.get_vars(loader=self._loader, play=iterator._play, host=host, task=handler)
|
||||
task_vars = self.add_tqm_variables(task_vars, play=iterator._play)
|
||||
self._queue_task(host, handler, task_vars, connection_info)
|
||||
|
|
Loading…
Reference in a new issue