diff --git a/services/clsi/app.js b/services/clsi/app.js index 930ebc3e1c..280b869472 100644 --- a/services/clsi/app.js +++ b/services/clsi/app.js @@ -339,6 +339,15 @@ const loadHttpPort = Settings.internal.load_balancer_agent.local_port if (!module.parent) { // Called directly + + // handle uncaught exceptions when running in production + if (Settings.catchErrors) { + process.removeAllListeners('uncaughtException') + process.on('uncaughtException', (error) => + logger.error({ err: error }, 'uncaughtException') + ) + } + app.listen(port, host, (error) => { if (error) { logger.fatal({ error }, `Error starting CLSI on ${host}:${port}`) diff --git a/services/clsi/config/settings.defaults.js b/services/clsi/config/settings.defaults.js index 72c3471ba9..a0ad8433aa 100644 --- a/services/clsi/config/settings.defaults.js +++ b/services/clsi/config/settings.defaults.js @@ -25,6 +25,8 @@ module.exports = { processLifespanLimitMs: parseInt(process.env.PROCESS_LIFE_SPAN_LIMIT_MS) || 60 * 60 * 24 * 1000 * 2, + catchErrors: process.env.CATCH_ERRORS === 'true', + path: { compilesDir: Path.resolve(__dirname, '../compiles'), outputDir: Path.resolve(__dirname, '../output'),