summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cammarata <jimi@sngx.net>2016-08-04 09:08:36 -0500
committerJames Cammarata <jimi@sngx.net>2016-08-08 15:58:46 -0500
commite2448951744e647df5c9a43b75d83cf7e62b887d (patch)
tree9af38d30a4fbd9ffba51088a8b25df6df855c5ca
parent06d4f4ad0e8f62c6b02b01833b94a0e44be008d0 (diff)
downloadansible-performance_improvements.tar.gz
Avoid copying task parents in TaskExecutorperformance_improvements
As Block.copy() is potentially expensive, avoid copying the parent structure of tasks in TaskExecutor.
-rw-r--r--lib/ansible/executor/task_executor.py3
-rw-r--r--test/units/executor/test_task_executor.py2
2 files changed, 3 insertions, 2 deletions
diff --git a/lib/ansible/executor/task_executor.py b/lib/ansible/executor/task_executor.py
index 88f69070eb..3faaee7e82 100644
--- a/lib/ansible/executor/task_executor.py
+++ b/lib/ansible/executor/task_executor.py
@@ -246,7 +246,8 @@ class TaskExecutor:
task_vars[loop_var] = item
try:
- tmp_task = self._task.copy(exclude_tasks=True)
+ tmp_task = self._task.copy(exclude_parent=True, exclude_tasks=True)
+ tmp_task._parent = self._task._parent
tmp_play_context = self._play_context.copy()
except AnsibleParserError as e:
results.append(dict(failed=True, msg=to_unicode(e)))
diff --git a/test/units/executor/test_task_executor.py b/test/units/executor/test_task_executor.py
index 12d1330239..60935692d5 100644
--- a/test/units/executor/test_task_executor.py
+++ b/test/units/executor/test_task_executor.py
@@ -139,7 +139,7 @@ class TestTaskExecutor(unittest.TestCase):
mock_host = MagicMock()
- def _copy(exclude_block=False, exclude_tasks=False):
+ def _copy(exclude_parent=False, exclude_tasks=False):
new_item = MagicMock()
return new_item