docs: update changelog
[poolifier.git] / src / pools / selection-strategies / fair-share-worker-choice-strategy.ts
index f0bc8787a6005e4d896140a220f49ae89b8c391c..e65575a1e05c805978111cbbf279c5f5a5767e6f 100644 (file)
@@ -13,7 +13,7 @@ import type {
  */
 interface WorkerVirtualTaskTimestamp {
   start: number
-  end: number
+  end?: number
 }
 
 /**
@@ -58,12 +58,17 @@ export class FairShareWorkerChoiceStrategy<
     return true
   }
 
+  /** @inheritDoc */
+  public update (workerNodeKey: number): boolean {
+    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 +100,7 @@ export class FairShareWorkerChoiceStrategy<
       : this.pool.workerNodes[workerNodeKey].tasksUsage.avgRunTime
     this.workersVirtualTaskTimestamp[workerNodeKey] = {
       start: workerVirtualTaskStartTimestamp,
-      end: workerVirtualTaskStartTimestamp + (workerVirtualTaskTRunTime ?? 0)
+      end: workerVirtualTaskStartTimestamp + workerVirtualTaskTRunTime
     }
   }
 }