From c7ec3cf58ad16a21ff01c8166385de5aaef3c355 Mon Sep 17 00:00:00 2001 From: Rohit Rajan Date: Sun, 28 Sep 2025 22:37:30 +0530 Subject: [PATCH] fix: server uncaught err handling --- server/src/server.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/server/src/server.ts b/server/src/server.ts index c49b367b..2b13dfdb 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -37,6 +37,12 @@ const pool = new Pool({ database: process.env.DB_NAME, password: process.env.DB_PASSWORD, port: process.env.DB_PORT ? parseInt(process.env.DB_PORT, 10) : undefined, + max: 50, // Increased from 20 to handle batched operations + min: 5, // Minimum connections to maintain + idleTimeoutMillis: 30000, + connectionTimeoutMillis: 10000, // Increased from 5000 to 10000 + maxUses: 7500, + allowExitOnIdle: true }); const PgSession = connectPgSimple(session); @@ -215,6 +221,22 @@ if (require.main === module) { }); } +process.on('unhandledRejection', (reason, promise) => { + logger.log('error', `Unhandled promise rejection at: ${promise}, reason: ${reason}`); + console.error('Unhandled promise rejection:', reason); +}); + +process.on('uncaughtException', (error) => { + logger.log('error', `Uncaught exception: ${error.message}`, { stack: error.stack }); + console.error('Uncaught exception:', error); + + if (process.env.NODE_ENV === 'production') { + setTimeout(() => { + process.exit(1); + }, 5000); + } +}); + if (require.main === module) { process.on('SIGINT', async () => { console.log('Main app shutting down...');