Browse Source

Change ssh_utils parameter to correctly send keepalive packets

The current implementation of ssh_utils never sends keepalive packets.
In ssh_utils.SSHPool, the socket timeout parameter is set to None
intending to keep ssh connections open.
However, when the parameter is set to None, ssh_utils does not run the
code to compare idle duration and keepalive interval.

This patch reverts the socket timeout parameter to default (0.1 sec).
The ssh_utils compares them every 0.1 seconds, and sends a keepalive
packet if idle duration > keepalive interval (= self.conn_timeout).

See cinder change: I8234083107207b9ebc0849947e8de92b5cf3e36e

Change-Id: Ib13e5c6246412d667554cb0bd9c419b513af70c7
Related-Bug: #1673662
Tom Barron 3 months ago
parent
commit
1814ad4113
1 changed files with 0 additions and 8 deletions
  1. 0
    8
      manila/utils.py

+ 0
- 8
manila/utils.py View File

@@ -142,16 +142,8 @@ class SSHPool(pools.Pool):
142 142
                         look_for_keys=look_for_keys,
143 143
                         timeout=self.conn_timeout,
144 144
                         banner_timeout=self.conn_timeout)
145
-            # Paramiko by default sets the socket timeout to 0.1 seconds,
146
-            # ignoring what we set through the sshclient. This doesn't help for
147
-            # keeping long lived connections. Hence we have to bypass it, by
148
-            # overriding it after the transport is initialized. We are setting
149
-            # the sockettimeout to None and setting a keepalive packet so that,
150
-            # the server will keep the connection open. All that does is send
151
-            # a keepalive packet every ssh_conn_timeout seconds.
152 145
             if self.conn_timeout:
153 146
                 transport = ssh.get_transport()
154
-                transport.sock.settimeout(None)
155 147
                 transport.set_keepalive(self.conn_timeout)
156 148
             return ssh
157 149
         except Exception as e:

Loading…
Cancel
Save