- const workerWeight =
- this.opts.weights?.[workerNodeKey] ?? this.defaultWorkerWeight
- if (workerWeight >= this.roundWeights[roundIndex]) {
- roundId = roundIndex
- workerNodeId = workerNodeKey
- break
+ this.workerNodeId = workerNodeKey
+ if (
+ this.workerNodeId !== this.nextWorkerNodeKey &&
+ this.workerNodeVirtualTaskRunTime !== 0
+ ) {
+ this.workerNodeVirtualTaskRunTime = 0
+ }
+ const workerWeight = this.opts.weights?.[workerNodeKey] as number
+ if (
+ this.isWorkerNodeReady(workerNodeKey) &&
+ workerWeight >= this.roundWeights[roundIndex] &&
+ this.workerNodeVirtualTaskRunTime < workerWeight
+ ) {
+ this.workerNodeVirtualTaskRunTime =
+ this.workerNodeVirtualTaskRunTime +
+ this.getWorkerNodeTaskRunTime(workerNodeKey)
+ this.setPreviousWorkerNodeKey(this.nextWorkerNodeKey)
+ this.nextWorkerNodeKey = workerNodeKey
+ return this.nextWorkerNodeKey