+ return this.pool.workerNodes.reduce(
+ (minWorkerNodeKey, workerNode, workerNodeKey, workerNodes) => {
+ if (workerNode.strategyData?.virtualTaskEndTimestamp == null) {
+ workerNode.strategyData = {
+ virtualTaskEndTimestamp:
+ this.computeWorkerNodeVirtualTaskEndTimestamp(workerNodeKey)
+ }
+ }
+ return this.isWorkerNodeReady(workerNodeKey) &&
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ workerNode.strategyData.virtualTaskEndTimestamp! <
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ workerNodes[minWorkerNodeKey].strategyData!.virtualTaskEndTimestamp!
+ ? workerNodeKey
+ : minWorkerNodeKey
+ },
+ 0
+ )