Add work-around for ssh pty race condition.

This should minimize loss of stdout when using
a pty and connecting with ssh or paramiko_ssh.
pull/15928/head
Matt Clay 9 years ago
parent aa9a054b61
commit bad293ae35

@ -711,6 +711,9 @@ class ActionBase(with_metaclass(ABCMeta, object)):
if self._connection.allow_executable: if self._connection.allow_executable:
if executable is None: if executable is None:
executable = self._play_context.executable executable = self._play_context.executable
# mitigation for SSH race which can drop stdout (https://github.com/ansible/ansible/issues/13876)
# only applied for the default executable to avoid interfering with the raw action
cmd = self._connection._shell.append_command(cmd, 'sleep 0')
if executable: if executable:
cmd = executable + ' -c ' + pipes.quote(cmd) cmd = executable + ' -c ' + pipes.quote(cmd)

@ -178,3 +178,11 @@ class ShellBase(object):
if rm_tmp: if rm_tmp:
new_cmd = '%s; rm -rf "%s" %s' % (new_cmd, rm_tmp, self._SHELL_REDIRECT_ALLNULL) new_cmd = '%s; rm -rf "%s" %s' % (new_cmd, rm_tmp, self._SHELL_REDIRECT_ALLNULL)
return new_cmd return new_cmd
def append_command(self, cmd, cmd_to_append):
"""Append an additional command if supported by the shell"""
if self._SHELL_AND:
cmd += ' %s %s' % (self._SHELL_AND, cmd_to_append)
return cmd

Loading…
Cancel
Save