From 0221948aabde76254335bdf39b7aea34aeca24fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Wed, 20 Nov 2024 14:02:13 +0100 Subject: [PATCH] fix(worker): minor improvements of graceful shutdown --- apps/worker/src/index.ts | 49 ++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/apps/worker/src/index.ts b/apps/worker/src/index.ts index 8b0dc106..28b85dbf 100644 --- a/apps/worker/src/index.ts +++ b/apps/worker/src/index.ts @@ -131,42 +131,37 @@ async function start() { }); }); - async function exitHandler(evtOrExitCodeOrError: number | string | Error) { + async function exitHandler( + eventName: string, + evtOrExitCodeOrError: number | string | Error, + ) { + logger.info('Starting graceful shutdown', { + code: evtOrExitCodeOrError, + eventName, + }); try { - await eventsWorker.close(); - await sessionsWorker.close(); - await cronWorker.close(); + await Promise.all([ + cronWorker.close(), + eventsWorker.close(), + sessionsWorker.close(), + notificationWorker.close(), + ]); + logger.info('workers closed successfully'); } catch (e) { logger.error('exit handler error', { code: evtOrExitCodeOrError, error: e, }); } - - process.exit( - Number.isNaN(+evtOrExitCodeOrError) ? 1 : +evtOrExitCodeOrError, - ); + const exitCode = Number.isNaN(+evtOrExitCodeOrError) + ? 1 + : +evtOrExitCodeOrError; + process.exit(exitCode); } - [ - 'beforeExit', - 'uncaughtException', - 'unhandledRejection', - 'SIGHUP', - 'SIGINT', - 'SIGQUIT', - 'SIGILL', - 'SIGTRAP', - 'SIGABRT', - 'SIGBUS', - 'SIGFPE', - 'SIGUSR1', - 'SIGSEGV', - 'SIGUSR2', - 'SIGTERM', - ].forEach((evt) => - process.on(evt, (evt) => { - exitHandler(evt); + ['uncaughtException', 'unhandledRejection', 'SIGTERM'].forEach((evt) => + process.on(evt, (code) => { + exitHandler(evt, code); }), );