Fix paramiko chan.recv_exit_status() call order #313
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
commands.remote_command
hangs when receiving a large amount of output. This appears to be an ordering problem whenchan.recv_exit_status()
is called before doing a read.This is ultimately a paramiko problem, discussed in this issue: paramiko/paramiko#448
And this warning in the channel code that was the result of the paramiko issue linked above indicates that
chan.recv_exit_status()
should be called after a read: https://github.com/paramiko/paramiko/blob/cf7d49d66f3b1fbc8b0853518a54050182b3b5eb/paramiko/channel.py#L387-L396The patch in this PR resolves hanging I have experienced when dumping large routing table output from a network host running BIRD using
commands.remote_command
in nornir.