X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fpools%2Fselection-strategies%2Ffair-share-worker-choice-strategy.ts;h=17133408e276191a9f85f1abbdf21209445420ab;hb=138d29a820e8a61d10ba03fe42c5d77596ef788c;hp=f0bc8787a6005e4d896140a220f49ae89b8c391c;hpb=0d80593b9a7596645612087f687fc6f5cab3101a;p=poolifier.git diff --git a/src/pools/selection-strategies/fair-share-worker-choice-strategy.ts b/src/pools/selection-strategies/fair-share-worker-choice-strategy.ts index f0bc8787..17133408 100644 --- a/src/pools/selection-strategies/fair-share-worker-choice-strategy.ts +++ b/src/pools/selection-strategies/fair-share-worker-choice-strategy.ts @@ -58,12 +58,19 @@ export class FairShareWorkerChoiceStrategy< return true } + /** @inheritDoc */ + public update (): boolean { + for (const [workerNodeKey] of this.pool.workerNodes.entries()) { + this.computeWorkerVirtualTaskTimestamp(workerNodeKey) + } + return true + } + /** @inheritDoc */ public choose (): number { let minWorkerVirtualTaskEndTimestamp = Infinity let chosenWorkerNodeKey!: number for (const [workerNodeKey] of this.pool.workerNodes.entries()) { - this.computeWorkerVirtualTaskTimestamp(workerNodeKey) const workerVirtualTaskEndTimestamp = this.workersVirtualTaskTimestamp[workerNodeKey]?.end ?? 0 if (workerVirtualTaskEndTimestamp < minWorkerVirtualTaskEndTimestamp) { @@ -95,7 +102,7 @@ export class FairShareWorkerChoiceStrategy< : this.pool.workerNodes[workerNodeKey].tasksUsage.avgRunTime this.workersVirtualTaskTimestamp[workerNodeKey] = { start: workerVirtualTaskStartTimestamp, - end: workerVirtualTaskStartTimestamp + (workerVirtualTaskTRunTime ?? 0) + end: workerVirtualTaskStartTimestamp + workerVirtualTaskTRunTime } } }