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.
(cherry picked from commit bad293ae35
)
This commit is contained in:
parent
036547b4dd
commit
b970e2ca80
2 changed files with 11 additions and 0 deletions
|
@ -708,6 +708,9 @@ class ActionBase(with_metaclass(ABCMeta, object)):
|
|||
if self._connection.allow_executable:
|
||||
if executable is None:
|
||||
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:
|
||||
cmd = executable + ' -c ' + pipes.quote(cmd)
|
||||
|
||||
|
|
|
@ -171,3 +171,11 @@ class ShellBase(object):
|
|||
if rm_tmp:
|
||||
new_cmd = '%s; rm -rf "%s" %s' % (new_cmd, rm_tmp, self._SHELL_REDIRECT_ALLNULL)
|
||||
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…
Reference in a new issue