X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fabstract-pool.ts;h=645a31e1b1edeed626d47d5d31a2bab23dbeaa83;hb=049c42848206f2c5c0db5a35efd8adc8796d1027;hp=ba87b704879abb5f8171f97681fc9a9148c0059e;hpb=9f95d5ebb5081a7f52a6cbd6a5a7c703081296da;p=poolifier.git diff --git a/src/pools/abstract-pool.ts b/src/pools/abstract-pool.ts index ba87b704..645a31e1 100644 --- a/src/pools/abstract-pool.ts +++ b/src/pools/abstract-pool.ts @@ -622,7 +622,7 @@ export abstract class AbstractPool< for (const [workerNodeKey] of this.workerNodes.entries()) { this.workerNodes[workerNodeKey].addEventListener( 'emptyqueue', - this.handleEmptyQueueEvent + this.handleEmptyQueueEvent as EventListener ) } } @@ -631,7 +631,7 @@ export abstract class AbstractPool< for (const [workerNodeKey] of this.workerNodes.entries()) { this.workerNodes[workerNodeKey].removeEventListener( 'emptyqueue', - this.handleEmptyQueueEvent + this.handleEmptyQueueEvent as EventListener ) } } @@ -640,7 +640,7 @@ export abstract class AbstractPool< for (const [workerNodeKey] of this.workerNodes.entries()) { this.workerNodes[workerNodeKey].addEventListener( 'backpressure', - this.handleBackPressureEvent + this.handleBackPressureEvent as EventListener ) } } @@ -649,7 +649,7 @@ export abstract class AbstractPool< for (const [workerNodeKey] of this.workerNodes.entries()) { this.workerNodes[workerNodeKey].removeEventListener( 'backpressure', - this.handleBackPressureEvent + this.handleBackPressureEvent as EventListener ) } } @@ -1276,6 +1276,8 @@ export abstract class AbstractPool< workerUsage.tasks.executing === 0 && this.tasksQueueSize(localWorkerNodeKey) === 0))) ) { + // Flag the worker node as not ready immediately + this.flagWorkerNodeAsNotReady(localWorkerNodeKey) this.destroyWorkerNode(localWorkerNodeKey).catch(error => { this.emitter?.emit(PoolEvents.error, error) }) @@ -1366,13 +1368,13 @@ export abstract class AbstractPool< if (this.opts.tasksQueueOptions?.taskStealing === true) { this.workerNodes[workerNodeKey].addEventListener( 'emptyqueue', - this.handleEmptyQueueEvent.bind(this) + this.handleEmptyQueueEvent as EventListener ) } if (this.opts.tasksQueueOptions?.tasksStealingOnBackPressure === true) { this.workerNodes[workerNodeKey].addEventListener( 'backpressure', - this.handleBackPressureEvent.bind(this) + this.handleBackPressureEvent as EventListener ) } } @@ -1601,7 +1603,7 @@ export abstract class AbstractPool< * @returns The worker information. */ protected getWorkerInfo (workerNodeKey: number): WorkerInfo { - return this.workerNodes[workerNodeKey].info + return this.workerNodes[workerNodeKey]?.info } /** @@ -1641,6 +1643,10 @@ export abstract class AbstractPool< } } + protected flagWorkerNodeAsNotReady (workerNodeKey: number): void { + this.getWorkerInfo(workerNodeKey).ready = false + } + /** @inheritDoc */ public hasWorkerNodeBackPressure (workerNodeKey: number): boolean { return (