X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fselection-strategies%2Finterleaved-weighted-round-robin-worker-choice-strategy.ts;h=7fba0f1b5dad0972af4ae9630b3c8565301a7863;hb=7790a494fdff6a2152b3153d02c9fbe8de11ed93;hp=2e82ac3d9caaaf0146ba9f3f8e9b6f45df1089da;hpb=edf8ce4e11eb0105038fcc236a2049c16b6175d2;p=poolifier.git diff --git a/src/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.ts b/src/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.ts index 2e82ac3d..7fba0f1b 100644 --- a/src/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.ts +++ b/src/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.ts @@ -111,8 +111,7 @@ export class InterleavedWeightedRoundRobinWorkerChoiceStrategy< this.workerVirtualTaskRunTime = this.workerVirtualTaskRunTime + this.getWorkerTaskRunTime(workerNodeKey) - this.previousWorkerNodeKey = - this.nextWorkerNodeKey ?? this.previousWorkerNodeKey + this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey) this.nextWorkerNodeKey = workerNodeKey return this.nextWorkerNodeKey } @@ -138,18 +137,20 @@ export class InterleavedWeightedRoundRobinWorkerChoiceStrategy< /** @inheritDoc */ public remove (workerNodeKey: number): boolean { - if (this.nextWorkerNodeKey === workerNodeKey) { - if (this.pool.workerNodes.length === 0) { - this.roundId = 0 - this.workerNodeId = 0 - this.nextWorkerNodeKey = 0 - } else if (this.nextWorkerNodeKey > this.pool.workerNodes.length - 1) { - if (this.workerNodeId === this.nextWorkerNodeKey) { - this.workerNodeId = this.pool.workerNodes.length - 1 - } - this.nextWorkerNodeKey = this.pool.workerNodes.length - 1 - } - this.workerVirtualTaskRunTime = 0 + if (this.pool.workerNodes.length === 0) { + this.reset() + } + if ( + this.workerNodeId === workerNodeKey && + this.workerNodeId > this.pool.workerNodes.length - 1 + ) { + this.workerNodeId = this.pool.workerNodes.length - 1 + } + if ( + this.previousWorkerNodeKey === workerNodeKey && + this.previousWorkerNodeKey > this.pool.workerNodes.length - 1 + ) { + this.previousWorkerNodeKey = this.pool.workerNodes.length - 1 } return true }