This reverts commit c649d0ea32
.
The change results in deadlock in network_cli while it is
waiting to check the return value of recv_ready() which
was added in this commit to improve performance
This commit is contained in:
parent
9cfa55619b
commit
17fea30841
2 changed files with 2 additions and 16 deletions
|
@ -182,7 +182,6 @@ import os
|
|||
import signal
|
||||
import socket
|
||||
import traceback
|
||||
import time
|
||||
from io import BytesIO
|
||||
|
||||
from ansible.errors import AnsibleConnectionFailure
|
||||
|
@ -360,15 +359,6 @@ class Connection(NetworkConnectionBase):
|
|||
display.debug("ssh connection has been closed successfully")
|
||||
super(Connection, self).close()
|
||||
|
||||
def receive_ssh_data(self, count, timeout):
|
||||
if timeout:
|
||||
start = time.time()
|
||||
while not self._ssh_shell.recv_ready():
|
||||
if time.time() - start >= timeout:
|
||||
raise AnsibleConnectionFailure("timeout waiting ssh data")
|
||||
time.sleep(0.001)
|
||||
return self._ssh_shell.recv(count)
|
||||
|
||||
def receive(self, command=None, prompts=None, answer=None, newline=True, prompt_retry_check=False, check_all=False):
|
||||
'''
|
||||
Handles receiving of output from command
|
||||
|
@ -386,14 +376,12 @@ class Connection(NetworkConnectionBase):
|
|||
buffer_read_timeout = self.get_option('persistent_buffer_read_timeout')
|
||||
self._validate_timeout_value(buffer_read_timeout, "persistent_buffer_read_timeout")
|
||||
|
||||
receive_data_timeout = self._ssh_shell.gettimeout()
|
||||
|
||||
while True:
|
||||
if command_prompt_matched:
|
||||
try:
|
||||
signal.signal(signal.SIGALRM, self._handle_buffer_read_timeout)
|
||||
signal.setitimer(signal.ITIMER_REAL, buffer_read_timeout)
|
||||
data = self.receive_ssh_data(256, receive_data_timeout)
|
||||
data = self._ssh_shell.recv(256)
|
||||
signal.alarm(0)
|
||||
# if data is still received on channel it indicates the prompt string
|
||||
# is wrongly matched in between response chunks, continue to read
|
||||
|
@ -407,7 +395,7 @@ class Connection(NetworkConnectionBase):
|
|||
except AnsibleCmdRespRecv:
|
||||
return self._command_response
|
||||
else:
|
||||
data = self.receive_ssh_data(256, receive_data_timeout)
|
||||
data = self._ssh_shell.recv(256)
|
||||
|
||||
# when a channel stream is closed, received data will be empty
|
||||
if not data:
|
||||
|
|
|
@ -126,8 +126,6 @@ class TestConnectionClass(unittest.TestCase):
|
|||
|
||||
mock__shell = MagicMock()
|
||||
conn._ssh_shell = mock__shell
|
||||
conn._ssh_shell.recv_ready.return_value = True
|
||||
conn._ssh_shell.gettimeout.return_value = 10
|
||||
|
||||
response = b"""device#command
|
||||
command response
|
||||
|
|
Loading…
Reference in a new issue