mirror of
https://github.com/ansible/ansible.git
synced 2026-08-02 08:03:18 +02: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:
co-authored by
Chris Meyers
Matt Davis
parent
423032930b
commit
a7eee1536f
@@ -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.
|
||||
@@ -2090,7 +2090,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