From 9fbeececff4515c8bea941da6ea35fbe904b8575 Mon Sep 17 00:00:00 2001 From: Tsiry Sandratraina Date: Tue, 1 Sep 2026 10:43:42 +0300 Subject: [PATCH] fix(feeds,ws): handle idle pg client errors and add pool timeouts Both pools were created without an "error" listener, so a server-side idle-connection termination crashed the whole process. Mirror the handler and idle/connect timeouts already used in apps/api. --- apps/feeds/src/drizzle.ts | 10 ++++++++++ apps/ws/src/drizzle.ts | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/apps/feeds/src/drizzle.ts b/apps/feeds/src/drizzle.ts index a7334854..e9d3fe8e 100644 --- a/apps/feeds/src/drizzle.ts +++ b/apps/feeds/src/drizzle.ts @@ -5,7 +5,17 @@ import pg from "pg"; const pool = new pg.Pool({ connectionString: env.XATA_POSTGRES_URL, max: 20, + idleTimeoutMillis: 30_000, + connectionTimeoutMillis: 10_000, }); + +pool.on("error", (err) => { + console.error( + "Idle pg client error (connection terminated by server):", + err.message, + ); +}); + const db = drizzle(pool); export default { db }; diff --git a/apps/ws/src/drizzle.ts b/apps/ws/src/drizzle.ts index 69f6d082..f51e33df 100644 --- a/apps/ws/src/drizzle.ts +++ b/apps/ws/src/drizzle.ts @@ -4,7 +4,17 @@ import pg from "pg"; const pool = new pg.Pool({ connectionString: Deno.env.get("XATA_POSTGRES_URL"), max: 20, + idleTimeoutMillis: 30_000, + connectionTimeoutMillis: 10_000, }); + +pool.on("error", (err: Error) => { + console.error( + "Idle pg client error (connection terminated by server):", + err.message, + ); +}); + const db = drizzle(pool); export default { db }; -- 2.51.2