X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fcluster%2Fdynamic.ts;h=eb93c0c8c6d5ac00908e4311f13b1b4392bc4d64;hb=e8ea58d292e381a6be7f4d0fee5d5b691adb37ac;hp=5eba843a3ae0726a3102d3068deced8679058844;hpb=8780c880a2cf08680092f6e41fb82600b196455c;p=poolifier.git diff --git a/src/pools/cluster/dynamic.ts b/src/pools/cluster/dynamic.ts index 5eba843a..eb93c0c8 100644 --- a/src/pools/cluster/dynamic.ts +++ b/src/pools/cluster/dynamic.ts @@ -2,6 +2,7 @@ import type { Worker } from 'cluster' import type { JSONValue } from '../../utility-types' import type { ClusterPoolOptions } from './fixed' import { FixedClusterPool } from './fixed' +import { killBehaviorTypes } from '../../worker/worker-options' /** * A cluster pool with a dynamic number of workers, but a guaranteed minimum number of workers. @@ -62,9 +63,10 @@ export class DynamicClusterPool< const worker = this.createAndSetupWorker() this.registerWorkerMessageListener(worker, message => { const tasksInProgress = this.tasks.get(worker) - if (message.kill && tasksInProgress === 0) { + const isKillBehaviorOptionHard = + message.kill === killBehaviorTypes.HARD + if (isKillBehaviorOptionHard || tasksInProgress === 0) { // Kill received from the worker, means that no new tasks are submitted to that worker for a while ( > maxInactiveTime) - // To handle the case of a long-running task we will check if there is any active task this.sendToWorker(worker, { kill: 1 }) void this.destroyWorker(worker) }