X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fabstract-pool.ts;h=a840dc740116057f8fa7867f85348a676caf04a4;hb=ffe8ca52bf1a05f68a0c939d16f15b6b54028be9;hp=a6f223e674bb4bb2d18e5df8e61f0b6132d62c8f;hpb=2e81254da65835a13328e4eb5695932f0f569934;p=poolifier.git diff --git a/src/pools/abstract-pool.ts b/src/pools/abstract-pool.ts index a6f223e6..a840dc74 100644 --- a/src/pools/abstract-pool.ts +++ b/src/pools/abstract-pool.ts @@ -214,10 +214,7 @@ export abstract class AbstractPool< public abstract get busy (): boolean protected internalBusy (): boolean { - return ( - this.numberOfRunningTasks >= this.numberOfWorkers && - this.findFreeWorkerNodeKey() === -1 - ) + return this.findFreeWorkerNodeKey() === -1 } /** @inheritDoc */ @@ -258,8 +255,8 @@ export abstract class AbstractPool< /** @inheritDoc */ public async destroy (): Promise { await Promise.all( - this.workerNodes.map(async workerNode => { - this.flushTasksQueueByWorker(workerNode.worker) + this.workerNodes.map(async (workerNode, workerNodeKey) => { + this.flushTasksQueue(workerNodeKey) await this.destroyWorker(workerNode.worker) }) ) @@ -339,11 +336,7 @@ export abstract class AbstractPool< */ protected chooseWorkerNode (): [number, WorkerNode] { let workerNodeKey: number - if ( - this.type === PoolType.DYNAMIC && - !this.full && - this.findFreeWorkerNodeKey() === -1 - ) { + if (this.type === PoolType.DYNAMIC && !this.full && this.internalBusy()) { const workerCreated = this.createAndSetupWorker() this.registerWorkerMessageListener(workerCreated, message => { if ( @@ -551,8 +544,8 @@ export abstract class AbstractPool< this.sendToWorker(this.workerNodes[workerNodeKey].worker, task) } - private enqueueTask (workerNodeKey: number, task: Task): void { - this.workerNodes[workerNodeKey].tasksQueue.push(task) + private enqueueTask (workerNodeKey: number, task: Task): number { + return this.workerNodes[workerNodeKey].tasksQueue.push(task) } private dequeueTask (workerNodeKey: number): Task | undefined { @@ -568,7 +561,6 @@ export abstract class AbstractPool< for (const task of this.workerNodes[workerNodeKey].tasksQueue) { this.executeTask(workerNodeKey, task) } - this.workerNodes[workerNodeKey].tasksQueue = [] } }