mirror of
https://github.com/ansible/ansible
synced 2026-06-19 07:35:52 +00:00
* Prevent run_command output truncation or hang
In cases when the selector used to monitor stdout/stderr activates without
data ready to read (a rare but normal condition), a read from a non-blocking
FD can return `None`, which was being conflated with an empty read (EOF)
condition. This caused the selector to be unregistered prematurely,
sometimes resulting in truncated output or hangs. `None` read results
are now excluded from EOF conditions.
* add changelog
---------
(cherry picked from commit 79ddee1)
Co-authored-by: Chris Meyers <chrismeyersfsu@users.noreply.github.com>
Co-authored-by: Matt Davis <nitzmahone@redhat.com>
This commit is contained in:
committed by
GitHub
parent
b7cb65d5f7
commit
ca635fac4a
@@ -0,0 +1,2 @@
|
||||
bugfixes:
|
||||
- run_command - Fixed premature selector unregistration on empty read from stdout/stderr that caused truncated output or hangs in rare situations.
|
||||
@@ -1972,7 +1972,7 @@ class AnsibleModule(object):
|
||||
stdout_changed = False
|
||||
for key, event in events:
|
||||
b_chunk = key.fileobj.read(32768)
|
||||
if not b_chunk:
|
||||
if not b_chunk and b_chunk is not None:
|
||||
selector.unregister(key.fileobj)
|
||||
elif key.fileobj == cmd.stdout:
|
||||
stdout += b_chunk
|
||||
|
||||
Reference in New Issue
Block a user