diff --git a/my-deepagent/src/my_deepagent/persistence/db.py b/my-deepagent/src/my_deepagent/persistence/db.py index ce1a555..a5d0ca2 100644 --- a/my-deepagent/src/my_deepagent/persistence/db.py +++ b/my-deepagent/src/my_deepagent/persistence/db.py @@ -75,10 +75,17 @@ class Database: """ def __init__(self, database_url: str) -> None: + # v0.3 hotfix: Postgres asyncpg pool occasionally hands out stale + # connections whose underlying socket was closed by the server (idle + # timeout, container restart, network blip, …). `pool_pre_ping` + # adds a fast ping before each checkout and invalidates dead + # connections so the next acquire dials a fresh one — fixes the + # "InterfaceError: connection is closed" 500 seen under SSE load. self._engine: AsyncEngine = create_async_engine( database_url, poolclass=None, echo=False, + pool_pre_ping=True, ) _attach_dialect_pragmas(self._engine) self._session_factory: async_sessionmaker[AsyncSession] = async_sessionmaker(