From d94830071dc27268d6c108236fafe4a6a57f2f68 Mon Sep 17 00:00:00 2001 From: Naz Date: Wed, 25 Nov 2020 13:55:34 +1300 Subject: [PATCH] Added description for job termination best practice --- ghost/job-manager/test/jobs/graceful.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/ghost/job-manager/test/jobs/graceful.js b/ghost/job-manager/test/jobs/graceful.js index 1bd6f0c0bc..424f3470eb 100644 --- a/ghost/job-manager/test/jobs/graceful.js +++ b/ghost/job-manager/test/jobs/graceful.js @@ -1,12 +1,12 @@ /* eslint-disable no-console */ const setTimeoutPromise = require('util').promisify(setTimeout); -const threads = require('bthreads'); +const {isMainThread, parentPort} = require('bthreads'); let shutdown = false; -if (!threads.isMainThread) { - threads.parentPort.on('message', (message) => { +if (!isMainThread) { + parentPort.on('message', (message) => { console.log(`paret message received: ${message}`); if (message === 'cancel') { shutdown = true; @@ -26,7 +26,15 @@ if (!threads.isMainThread) { await setTimeoutPromise(100); // async cleanup imitation - process.exit(0); + if (parentPort) { + // preferred method of shutting down the worker + // it signals job manager about finished job and the thread + // is later terminated through `terminate()` method allowing + // for unfinished pipes to flush (e.g. loggers) + parentPort.postMessage('done'); + } else { + process.exit(0); + } } } })();