fix(worker): minor improvements of graceful shutdown
This commit is contained in:
@@ -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 {
|
try {
|
||||||
await eventsWorker.close();
|
await Promise.all([
|
||||||
await sessionsWorker.close();
|
cronWorker.close(),
|
||||||
await cronWorker.close();
|
eventsWorker.close(),
|
||||||
|
sessionsWorker.close(),
|
||||||
|
notificationWorker.close(),
|
||||||
|
]);
|
||||||
|
logger.info('workers closed successfully');
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.error('exit handler error', {
|
logger.error('exit handler error', {
|
||||||
code: evtOrExitCodeOrError,
|
code: evtOrExitCodeOrError,
|
||||||
error: e,
|
error: e,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
const exitCode = Number.isNaN(+evtOrExitCodeOrError)
|
||||||
process.exit(
|
? 1
|
||||||
Number.isNaN(+evtOrExitCodeOrError) ? 1 : +evtOrExitCodeOrError,
|
: +evtOrExitCodeOrError;
|
||||||
);
|
process.exit(exitCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
[
|
['uncaughtException', 'unhandledRejection', 'SIGTERM'].forEach((evt) =>
|
||||||
'beforeExit',
|
process.on(evt, (code) => {
|
||||||
'uncaughtException',
|
exitHandler(evt, code);
|
||||||
'unhandledRejection',
|
|
||||||
'SIGHUP',
|
|
||||||
'SIGINT',
|
|
||||||
'SIGQUIT',
|
|
||||||
'SIGILL',
|
|
||||||
'SIGTRAP',
|
|
||||||
'SIGABRT',
|
|
||||||
'SIGBUS',
|
|
||||||
'SIGFPE',
|
|
||||||
'SIGUSR1',
|
|
||||||
'SIGSEGV',
|
|
||||||
'SIGUSR2',
|
|
||||||
'SIGTERM',
|
|
||||||
].forEach((evt) =>
|
|
||||||
process.on(evt, (evt) => {
|
|
||||||
exitHandler(evt);
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user