summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2016-09-10 07:26:41 -0500
committerJames Cammarata <jimi@sngx.net>2016-09-10 09:43:49 -0500
commitd3418fd6580bfadc14f418b371d9dfe88c947921 (patch)
tree6219444ee974c81186882e2bf148b6fe69cce592
parent6b206f5d00053f01dbae5052fde8856b9d8853e5 (diff)
downloadansible-d3418fd6580bfadc14f418b371d9dfe88c947921.tar.gz
Flush the queued items in linear periodically
-rw-r--r--lib/ansible/plugins/strategy/__init__.py2
-rw-r--r--lib/ansible/plugins/strategy/linear.py12
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)