From 07f9bfacac842490ac345cf30cd407c5f1df1dc2 Mon Sep 17 00:00:00 2001 From: David Glandon Date: Sat, 30 May 2026 01:15:21 -0400 Subject: [PATCH] server: Fix leaking fd due to cleanup (#2052) --- server/python/cluster_setup.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/server/python/cluster_setup.py b/server/python/cluster_setup.py index 2d13df44f..a8d51e494 100644 --- a/server/python/cluster_setup.py +++ b/server/python/cluster_setup.py @@ -127,9 +127,13 @@ class ClusterSetup: except: pass finally: - self.clusterPeers.pop(clusterPeerKey) + self.clusterPeers.pop(clusterPeerKey, None) peer.kill("cluster client killed") writer.close() + try: + await writer.wait_closed() + except: + pass clusterRpcServerInfo = await cluster_listen_zero(handleClusterClient) self.clusterPort = clusterRpcServerInfo["port"] @@ -182,7 +186,7 @@ class ClusterSetup: ) ) except: - self.clusterPeers.pop(clusterPeerKey) + self.clusterPeers.pop(clusterPeerKey, None) raise async def run_loop(): @@ -191,7 +195,13 @@ class ClusterSetup: except: pass finally: - self.clusterPeers.pop(clusterPeerKey) + self.clusterPeers.pop(clusterPeerKey, None) + clusterPeer.kill("cluster peer killed") + writer.close() + try: + await writer.wait_closed() + except: + pass asyncio.run_coroutine_threadsafe(run_loop(), self.loop) return clusterPeer