How to Prevent a Node.js 12 worker Thread from terminating immediately?
I'm mostly spitballin' here, but I think this'll put you on the right track:
add to start.js
process.on('SIGTERM', cleanup);
process.on('SIGINT', cleanup);
myWorker.once('exit', stop);
function cleanup() {
myWorker.postMessage('cleanup');
}
worker.js
const { parentPort } = require('worker_threads');
parentPort.on('message', (value) => {
if (value === 'cleanup') {
cleanup();
//then process.exit(0);
}
});
The following solution should work-
- Subscribe to main thread
message
event in the worker thread - Subscribe to
SIGTERM
(or whatever) in the main thread - When you catch the signal in the main thread, send a message to the worker thread, requesting it to clean up and exit. ** Do not exit from the main thread yet**.
- In the main thread wait for worker thread to stop by subscribing to
exit
event. - When worker thread stops, exit from the main thread.