From faeb42b3964ab05e1eb08648e2ac036725c2edd8 Mon Sep 17 00:00:00 2001 From: Mouce Date: Tue, 2 Jun 2026 09:19:20 +0800 Subject: [PATCH] fix(gateway): close ResponseStore DB connection on adapter disconnect Prevent file descriptor leak when adapters reconnect. The ResponseStore SQLite connection was not being closed in disconnect(), causing FDs to accumulate until hitting the system limit (256 on macOS default). This manifested as: - [Errno 24] Too many open files errors - DNS resolution failures (couldn't create sockets) - Platform adapters (feishu, etc.) becoming unresponsive daily Fix: Call ResponseStore.close() in APIServerAdapter.disconnect(). --- gateway/platforms/api_server.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gateway/platforms/api_server.py b/gateway/platforms/api_server.py index 1c4cb6df728be..4ec5c9ecee58b 100644 --- a/gateway/platforms/api_server.py +++ b/gateway/platforms/api_server.py @@ -4204,6 +4204,9 @@ async def disconnect(self) -> None: await self._runner.cleanup() self._runner = None self._app = None + # Close response store database connection to prevent FD leak + if hasattr(self, '_response_store') and self._response_store: + self._response_store.close() logger.info("[%s] API server stopped", self.name) async def send(