diff options
author | James Cammarata <jimi@sngx.net> | 2016-09-10 07:26:41 -0500 |
---|---|---|
committer | James Cammarata <jimi@sngx.net> | 2016-09-10 09:43:49 -0500 |
commit | d3418fd6580bfadc14f418b371d9dfe88c947921 (patch) | |
tree | 6219444ee974c81186882e2bf148b6fe69cce592 | |
parent | 6b206f5d00053f01dbae5052fde8856b9d8853e5 (diff) | |
download | ansible-d3418fd6580bfadc14f418b371d9dfe88c947921.tar.gz |
Flush the queued items in linear periodically
-rw-r--r-- | lib/ansible/plugins/strategy/__init__.py | 2 | ||||
-rw-r--r-- | lib/ansible/plugins/strategy/linear.py | 12 |
2 files changed, 9 insertions, 5 deletions
diff --git a/lib/ansible/plugins/strategy/__init__.py b/lib/ansible/plugins/strategy/__init__.py index d1036d4a66..65b645a3d0 100644 --- a/lib/ansible/plugins/strategy/__init__.py +++ b/lib/ansible/plugins/strategy/__init__.py @@ -181,7 +181,7 @@ class StrategyBase: return False passes = 1 - while not self._tqm._terminated and passes < 3: + while not self._tqm._terminated and passes < 3 and self._pending_results > 0: try: task_result = self._final_q.get(timeout=timeout) original_host = get_original_host(task_result._host) diff --git a/lib/ansible/plugins/strategy/linear.py b/lib/ansible/plugins/strategy/linear.py index 08b7a52c56..a843ae57e6 100644 --- a/lib/ansible/plugins/strategy/linear.py +++ b/lib/ansible/plugins/strategy/linear.py @@ -266,10 +266,14 @@ class StrategyModule(StrategyBase): if run_once: break - # FIXME: probably not required here any more with the result proc - # having been removed, so there's no only a single result - # queue for the main thread - results += self._process_pending_results(iterator, one_pass=True) + # flush the queue if we've got more items than we have workers, + # and read back any results which may have arrived already + if len(items_to_queue) > len(self._tqm._workers): + self._tqm.queue_multiple_tasks(items_to_queue, play_context) + items_to_queue = [] + + if self._pending_results > 0: + results += self._process_pending_results(iterator, one_pass=True) self._tqm.queue_multiple_tasks(items_to_queue, play_context) |