From 6bb61cdbcc05a8fb6b24dd4d859d1f943a54e4b7 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 5 Oct 2026 14:07:23 +0000 Subject: [PATCH] =?UTF-8?q?fix(db):=20ne=20plus=20arr=C3=AAter=20le=20serv?= =?UTF-8?q?eur=20quand=20Postgres=20coupe=20une=20connexion?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quand la base redémarre (redéploiement, restart du conteneur) ou que le réseau coupe, pg-pool émet 'error' pour chaque connexion inactive interrompue. Aucun écouteur n'était branché sur le pool de server/db.ts : Node levait l'événement non géré et arrêtait tout le serveur, avec un dump géant du client pg dans les logs. Le pool écarte déjà la connexion fautive et en ouvre une neuve à la requête suivante : on se contente de journaliser le code et le message. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01MsDJjQrAggcJwbbBtKhgyb --- server/db.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server/db.ts b/server/db.ts index 6083fdf..ee1c4b6 100644 --- a/server/db.ts +++ b/server/db.ts @@ -30,6 +30,14 @@ if (isProduction && dbUrl && (dbUrl.includes('logiflow-db') || dbUrl.includes('l db = drizzle({ client: pool, schema }); + // Une connexion inactive coupée par Postgres (redémarrage ou redéploiement de + // la base, coupure réseau) fait émettre 'error' au pool. Sans écouteur, Node + // arrête tout le serveur ; le pool écarte déjà la connexion fautive et en + // ouvre une neuve à la requête suivante, il suffit donc de journaliser. + pool.on('error', (err: any) => { + console.error('❌ PostgreSQL idle connection error (connexion écartée):', err?.code || '', err?.message); + }); + // Test connection try { await pool.connect().then((client: any) => {