From 973a736bc2971cc3d19a5dc90e273bbe8eb131dd Mon Sep 17 00:00:00 2001 From: Thierry Tallagrand Date: Wed, 16 Sep 2026 09:36:10 +0200 Subject: [PATCH] concierge: ecouteur 'error' sur le client pg (evite une mort silencieuse) Un 'error' socket du client pg SANS ecouteur = exception non capturee qui echappe au try/catch et TUE le process -- donc l'alerte d'echec d'auth ne partirait jamais ("un battement dans un process mort ne bat pas", piege signale par EVCS). makeClient attache desormais un ecouteur : l'erreur devient non fatale, l'await en cours rejette et reste rattrape par l'etage live. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y --- workspace/concierge-detection.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/workspace/concierge-detection.js b/workspace/concierge-detection.js index bba03fb..cfd001d 100644 --- a/workspace/concierge-detection.js +++ b/workspace/concierge-detection.js @@ -207,7 +207,15 @@ async function main() { } } -function makeClient() { return new Client({ ...PG_BASE, password: readPgPassword() }); } +function makeClient() { + const c = new Client({ ...PG_BASE, password: readPgPassword() }); + // Un 'error' socket (backend qui tombe, connexion coupée) SANS écouteur devient une + // exception NON capturée qui échappe au try/catch et TUE le process (piège signalé par + // EVCS 16/09 : « un battement dans un process mort ne bat pas »). On l'écoute pour le + // rendre non fatal ; l'opération await en cours rejette et reste rattrapée normalement. + c.on('error', (e) => { console.error('[pg] socket error (non fatal):', e.message); }); + return c; +} if (require.main === module) { main().catch(e => { console.error('[concierge]', e.message); process.exit(1); });