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 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
This commit is contained in:
2026-09-16 09:36:10 +02:00
parent 04c1e19bf3
commit 973a736bc2

View File

@@ -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) { if (require.main === module) {
main().catch(e => { console.error('[concierge]', e.message); process.exit(1); }); main().catch(e => { console.error('[concierge]', e.message); process.exit(1); });