From 4aec890351f5cd3dde95de89fc2f182ca2941a1e Mon Sep 17 00:00:00 2001 From: Tim O'Farrell Date: Tue, 23 Dec 2025 17:05:44 -0700 Subject: [PATCH] Added pool recycling --- enterprise/storage/database.py | 2 ++ openhands/app_server/services/db_session_injector.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/enterprise/storage/database.py b/enterprise/storage/database.py index f0d8e9d62c..2a1d0c5c74 100644 --- a/enterprise/storage/database.py +++ b/enterprise/storage/database.py @@ -19,6 +19,7 @@ GCP_REGION = os.environ.get('GCP_REGION') POOL_SIZE = int(os.environ.get('DB_POOL_SIZE', '25')) MAX_OVERFLOW = int(os.environ.get('DB_MAX_OVERFLOW', '10')) +POOL_RECYCLE = int(os.environ.get('DB_MAX_OVERFLOW', '1800')) def _get_db_engine(): @@ -38,6 +39,7 @@ def _get_db_engine(): creator=get_db_connection, pool_size=POOL_SIZE, max_overflow=MAX_OVERFLOW, + pool_recycle=POOL_RECYCLE, pool_pre_ping=True, ) else: diff --git a/openhands/app_server/services/db_session_injector.py b/openhands/app_server/services/db_session_injector.py index c59243af91..22ada0beb8 100644 --- a/openhands/app_server/services/db_session_injector.py +++ b/openhands/app_server/services/db_session_injector.py @@ -33,6 +33,7 @@ class DbSessionInjector(BaseModel, Injector[async_sessionmaker]): echo: bool = False pool_size: int = 25 max_overflow: int = 10 + pool_recycle: int = 1800 gcp_db_instance: str | None = None gcp_project: str | None = None gcp_region: str | None = None @@ -141,6 +142,7 @@ class DbSessionInjector(BaseModel, Injector[async_sessionmaker]): pool_size=self.pool_size, max_overflow=self.max_overflow, pool_pre_ping=True, + pool_recycle=self.pool_recycle, ) async def get_async_db_engine(self) -> AsyncEngine: