import type { IPool } from '../pool.js'
import type { IWorker } from '../worker.js'
-import { getWorkerChoiceStrategyRetries } from '../../utils.js'
+import { getWorkerChoiceStrategyRetries } from '../utils.js'
import { FairShareWorkerChoiceStrategy } from './fair-share-worker-choice-strategy.js'
import { InterleavedWeightedRoundRobinWorkerChoiceStrategy } from './interleaved-weighted-round-robin-worker-choice-strategy.js'
import { LeastBusyWorkerChoiceStrategy } from './least-busy-worker-choice-strategy.js'
Data = unknown,
Response = unknown
> {
+ /**
+ * The number of worker choice strategy execution retries.
+ */
+ public retriesCount: number
+
/**
* The worker choice strategy instances registered in the context.
*/
>
/**
- * The number of worker choice strategy execution retries.
+ * The maximum number of worker choice strategy execution retries.
*/
private readonly retries: number
>(pool, opts)
]
])
+ this.retriesCount = 0
this.retries = getWorkerChoiceStrategyRetries(pool, opts)
}
* Executes the worker choice strategy in the context algorithm.
*
* @returns The key of the worker node.
- * @throws {@link https://nodejs.org/api/errors.html#class-error} If after configured retries the worker node key is null or undefined.
+ * @throws {@link https://nodejs.org/api/errors.html#class-error} If after computed retries the worker node key is null or undefined.
*/
public execute (): number {
return this.executeStrategy(
do {
workerNodeKey = workerChoiceStrategy.choose()
if (workerNodeKey == null && chooseCount > 0) {
- retriesCount++
+ ++retriesCount
+ ++this.retriesCount
}
- chooseCount++
+ ++chooseCount
} while (workerNodeKey == null && retriesCount < this.retries)
if (workerNodeKey == null) {
throw new Error(