Fix leaked file descriptors by cleaning up objects
A reference to the ovsdbapp Connection object is stored on the the
API impl class and it is causing the object to stick around and
its pipe fds to never close. Ultimately, python-ovs's call to
select() is limited to 1024 file descriptors and will eventually
error out. This deletes the connection and api objects explicitly
when we are done with them.
Conflicts:
ovn_octavia_provider/driver.py
ovn_octavia_provider/helper.py
ovn_octavia_provider/ovsdb/impl_idl_ovn.py
Change-Id: I97b27eaa293fb161724d34da88b4398f8b590c33
Co-authored-by: Brian Haley <bhaley@redhat.com>
Closes-Bug: #1894136
(cherry picked from commit 5b0715d967
)
This commit is contained in:
parent
9aaf0862b3
commit
e6c7e5a377
|
@ -186,10 +186,11 @@ class OvnNbIdlForLb(ovsdb_monitor.OvnIdl):
|
|||
|
||||
def stop(self):
|
||||
# Close the running connection if it has been initalized
|
||||
if ((hasattr(self, 'conn') and not
|
||||
self.conn.stop(timeout=ovn_conf.get_ovn_ovsdb_timeout()))):
|
||||
LOG.debug("Connection terminated to OvnNb "
|
||||
"but a thread is still alive")
|
||||
if hasattr(self, 'conn'):
|
||||
if not self.conn.stop(timeout=ovn_conf.get_ovn_ovsdb_timeout()):
|
||||
LOG.debug("Connection terminated to OvnNb "
|
||||
"but a thread is still alive")
|
||||
del self.conn
|
||||
# complete the shutdown for the event handler
|
||||
self.notify_handler.shutdown()
|
||||
# Close the idl session
|
||||
|
@ -266,6 +267,7 @@ class OvnProviderHelper(object):
|
|||
self.requests.put({'type': REQ_TYPE_EXIT})
|
||||
self.helper_thread.join()
|
||||
self.ovn_nbdb.stop()
|
||||
del self.ovn_nbdb_api
|
||||
|
||||
@staticmethod
|
||||
def _map_val(row, col, key):
|
||||
|
|
Loading…
Reference in New Issue