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. Change-Id: I97b27eaa293fb161724d34da88b4398f8b590c33 Co-authored-by: Brian Haley <bhaley@redhat.com> Closes-Bug: #1894136
This commit is contained in:
parent
b68d2a78a4
commit
5b0715d967
@ -116,6 +116,7 @@ class OvnProviderHelper(object):
|
||||
self.requests.put({'type': ovn_const.REQ_TYPE_EXIT})
|
||||
self.helper_thread.join()
|
||||
self.ovn_nbdb.stop()
|
||||
del self.ovn_nbdb_api
|
||||
|
||||
@staticmethod
|
||||
def _map_val(row, col, key):
|
||||
|
@ -175,10 +175,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=config.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=config.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
|
||||
|
Loading…
Reference in New Issue
Block a user