chore: v3.0.5
[poolifier.git] / src / pools / selection-strategies / fair-share-worker-choice-strategy.ts
index af3fcfa00ce06fdb369f7372e8154016a504efce..f47a1e6e9ba7724fa665235a2a9204219ed2220e 100644 (file)
@@ -89,9 +89,10 @@ export class FairShareWorkerChoiceStrategy<
               this.computeWorkerNodeVirtualTaskEndTimestamp(workerNodeKey)
           }
         }
-        return (workerNode.strategyData.virtualTaskEndTimestamp as number) <
-          ((workerNodes[minWorkerNodeKey].strategyData as StrategyData)
-            .virtualTaskEndTimestamp as number)
+        return this.isWorkerNodeReady(workerNodeKey) &&
+          (workerNode.strategyData.virtualTaskEndTimestamp as number) <
+            ((workerNodes[minWorkerNodeKey].strategyData as StrategyData)
+              .virtualTaskEndTimestamp as number)
           ? workerNodeKey
           : minWorkerNodeKey
       },
@@ -128,12 +129,12 @@ export class FairShareWorkerChoiceStrategy<
   private getWorkerNodeVirtualTaskStartTimestamp (
     workerNodeKey: number
   ): number {
+    const virtualTaskEndTimestamp =
+      this.pool.workerNodes[workerNodeKey]?.strategyData
+        ?.virtualTaskEndTimestamp
     const now = performance.now()
-    return now <
-      (this.pool.workerNodes[workerNodeKey]?.strategyData
-        ?.virtualTaskEndTimestamp ?? -Infinity)
-      ? (this.pool.workerNodes[workerNodeKey]?.strategyData
-          ?.virtualTaskEndTimestamp as number)
+    return now < (virtualTaskEndTimestamp ?? -Infinity)
+      ? (virtualTaskEndTimestamp as number)
       : now
   }
 }