Close subprocess stdout and stderr in the ssh connection plugin (#64874)

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
This commit is contained in:
Sviatoslav Sydorenko 2019-12-03 22:17:44 +01:00 committed by Matt Davis
parent e3af54ffdd
commit 6ee5297c02

View file

@ -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: