implements IWorkerChoiceStrategy {
/** @inheritDoc */
public readonly strategyPolicy: StrategyPolicy = {
- useDynamicWorker: true
+ dynamicWorkerUsage: true,
+ dynamicWorkerReady: true
}
/** @inheritDoc */
}
/** @inheritDoc */
- public choose (): number {
+ public choose (): number | undefined {
const chosenWorkerNodeKey = this.nextWorkerNodeKey
- do {
- this.roundRobinNextWorkerNodeKey()
- } while (!this.isWorkerNodeEligible(this.nextWorkerNodeKey))
+ this.roundRobinNextWorkerNodeKey()
+ if (!this.isWorkerNodeEligible(this.nextWorkerNodeKey as number)) {
+ this.nextWorkerNodeKey = undefined
+ }
return chosenWorkerNodeKey
}
return true
}
- private roundRobinNextWorkerNodeKey (): number {
+ private roundRobinNextWorkerNodeKey (): number | undefined {
this.nextWorkerNodeKey =
this.nextWorkerNodeKey === this.pool.workerNodes.length - 1
? 0
- : this.nextWorkerNodeKey + 1
+ : (this.nextWorkerNodeKey ?? 0) + 1
return this.nextWorkerNodeKey
}
}