From f081c68a656488e79255eb6865b930cf56c791a9 Mon Sep 17 00:00:00 2001 From: Michael DeHaan Date: Mon, 7 Oct 2013 17:15:19 -0400 Subject: [PATCH] Prevent duplicately loaded handlers from running more than once. Fixes #3863 --- lib/ansible/playbook/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ansible/playbook/__init__.py b/lib/ansible/playbook/__init__.py index bc5895ad9b9..f0335539579 100644 --- a/lib/ansible/playbook/__init__.py +++ b/lib/ansible/playbook/__init__.py @@ -538,10 +538,14 @@ class PlayBook(object): # here a meta task is a placeholder that signals handlers should be run if task.meta == 'flush_handlers': + fired_names = {} for handler in play.handlers(): if len(handler.notified_by) > 0: self.inventory.restrict_to(handler.notified_by) - self._run_task(play, handler, True) + if handler.name not in fired_names: + self._run_task(play, handler, True) + # prevent duplicate handler includes from running more than once + fired_names[handler.name] = 1 self.inventory.lift_restriction() new_list = handler.notified_by[:] for host in handler.notified_by: