mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-26 12:21:26 -07:00
Fixing bugs in strategies
* Don't filter hosts remaining based on their failed state. Instead rely on the PlayIterator to return None/ITERATING_COMPLETE when the host is failed. * In the free strategy, make sure we wait outside the host loop for all pending results to be processed. * Use the internal _set_failed_state() instead of manually setting things when a failed child state is hit Fixes #15623
This commit is contained in:
parent
5c7ad654db
commit
09c90f7f2f
3 changed files with 10 additions and 8 deletions
|
@ -58,7 +58,7 @@ class StrategyModule(StrategyBase):
|
|||
work_to_do = True
|
||||
while work_to_do and not self._tqm._terminated:
|
||||
|
||||
hosts_left = [host for host in self._inventory.get_hosts(iterator._play.hosts) if host.name not in self._tqm._unreachable_hosts and not iterator.is_failed(host)]
|
||||
hosts_left = [host for host in self._inventory.get_hosts(iterator._play.hosts) if host.name not in self._tqm._unreachable_hosts]
|
||||
if len(hosts_left) == 0:
|
||||
self._tqm.send_callback('v2_playbook_on_no_hosts_remaining')
|
||||
result = False
|
||||
|
@ -191,6 +191,9 @@ class StrategyModule(StrategyBase):
|
|||
# pause briefly so we don't spin lock
|
||||
time.sleep(0.001)
|
||||
|
||||
# collect all the final results
|
||||
results = self._wait_on_pending_results(iterator)
|
||||
|
||||
# run the base class run() method, which executes the cleanup function
|
||||
# and runs any outstanding handlers which have been triggered
|
||||
return super(StrategyModule, self).run(iterator, play_context, result)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue