summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cassell <code@james.cassell.me>2020-02-04 14:40:09 -0500
committerGitHub <noreply@github.com>2020-02-04 11:40:09 -0800
commitfd954a9c5c05c7149eb23271529ff070f2b1f9dc (patch)
tree95dab7ba4547adea51201ddd147e0193f282fa54
parentf4a80bb600510669801c5d5c0a250952748e99fd (diff)
downloadansible-fd954a9c5c05c7149eb23271529ff070f2b1f9dc.tar.gz
wait_for_connection: also retry interpreter discovery (#67040)
self._discovered_interpreter_key is None unless a previous iteration has attempted discovery. In that case, force re-discovery, as the previous attempt certainly failed.
-rw-r--r--changelogs/fragments/wait_for_connection-interpreter-discovery-retry.yaml4
-rw-r--r--lib/ansible/plugins/action/wait_for_connection.py3
2 files changed, 7 insertions, 0 deletions
diff --git a/changelogs/fragments/wait_for_connection-interpreter-discovery-retry.yaml b/changelogs/fragments/wait_for_connection-interpreter-discovery-retry.yaml
new file mode 100644
index 0000000000..446edd24f1
--- /dev/null
+++ b/changelogs/fragments/wait_for_connection-interpreter-discovery-retry.yaml
@@ -0,0 +1,4 @@
+---
+bugfixes:
+- wait_for_connection - with pipelining enabled, interpreter discovery would
+ fail if the first connection attempt was not successful
diff --git a/lib/ansible/plugins/action/wait_for_connection.py b/lib/ansible/plugins/action/wait_for_connection.py
index fbf4e98fa2..8c5b3bea1a 100644
--- a/lib/ansible/plugins/action/wait_for_connection.py
+++ b/lib/ansible/plugins/action/wait_for_connection.py
@@ -79,6 +79,9 @@ class ActionModule(ActionBase):
def ping_module_test(connect_timeout):
''' Test ping module, if available '''
display.vvv("wait_for_connection: attempting ping module test")
+ # re-run interpreter discovery if we ran it in the first iteration
+ if self._discovered_interpreter_key:
+ task_vars['ansible_facts'].pop(self._discovered_interpreter_key, None)
# call connection reset between runs if it's there
try:
self._connection.reset()