Skip to content

Commit

Permalink
handlers: fix executing in lockstep using linear (ansible#83030)
Browse files Browse the repository at this point in the history
  • Loading branch information
mkrizek committed Apr 16, 2024
1 parent 82d91f0 commit a3cdd83
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 1 deletion.
2 changes: 2 additions & 0 deletions changelogs/fragments/82307-handlers-lockstep-linear-fix.yml
@@ -0,0 +1,2 @@
bugfixes:
- Fix handlers not being executed in lockstep using the linear strategy in some cases (https://github.com/ansible/ansible/issues/82307)
2 changes: 1 addition & 1 deletion lib/ansible/executor/play_iterator.py
Expand Up @@ -427,13 +427,13 @@ def _get_next_task_from_state(self, state, host):
# might be there from previous flush
state.handlers = self.handlers[:]
state.update_handlers = False
state.cur_handlers_task = 0

while True:
try:
task = state.handlers[state.cur_handlers_task]
except IndexError:
task = None
state.cur_handlers_task = 0
state.run_state = state.pre_flushing_run_state
state.update_handlers = True
break
Expand Down
25 changes: 25 additions & 0 deletions test/integration/targets/handlers/handlers_lockstep_82307.yml
@@ -0,0 +1,25 @@
- hosts: A,B
gather_facts: false
tasks:
- block:
- command: echo
notify:
- handler1
- handler2

- fail:
when: inventory_hostname == "B"

- meta: flush_handlers
always:
- name: always
debug:
msg: always
handlers:
- name: handler1
debug:
msg: handler1

- name: handler2
debug:
msg: handler2
3 changes: 3 additions & 0 deletions test/integration/targets/handlers/runme.sh
Expand Up @@ -216,3 +216,6 @@ ansible-playbook nested_flush_handlers_failure_force.yml -i inventory.handlers "

ansible-playbook 82241.yml -i inventory.handlers "$@" 2>&1 | tee out.txt
[ "$(grep out.txt -ce 'included_task_from_tasks_dir')" = "1" ]

ansible-playbook handlers_lockstep_82307.yml -i inventory.handlers "$@" 2>&1 | tee out.txt
[ "$(grep out.txt -ce 'TASK \[handler2\]')" = "0" ]

0 comments on commit a3cdd83

Please sign in to comment.