Close subprocess stdout and stderr in the ssh connection plugin

Eliminate `ResourceWarning: unclosed file` by closing all
file handles of each subprocess used by the SSH connection
plugin to execute commands.

This change prevents Ansible from accumulating "forgotten"
open file handles.

PR #64785 by Julien Palard
Fixes #64768
pull/64785/merge
Julien Palard 5 years ago committed by Sviatoslav Sydorenko
parent 67fd17bee4
commit 81b334bcaf

@ -1014,9 +1014,11 @@ class Connection(ConnectionBase):
# Otherwise there may still be outstanding data to read.
finally:
selector.close()
# close stdin after process is terminated and stdout/stderr are read
# completely (see also issue #848)
# close stdin, stdout, and stderr after process is terminated and
# stdout/stderr are read completely (see also issues #848, #64768).
stdin.close()
p.stdout.close()
p.stderr.close()
if C.HOST_KEY_CHECKING:
if cmd[0] == b"sshpass" and p.returncode == 6:

Loading…
Cancel
Save