feat: add infinite retries support in worker choice strategy
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 12 Dec 2023 16:33:20 +0000 (17:33 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 12 Dec 2023 16:33:20 +0000 (17:33 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
CHANGELOG.md
docs/api.md
src/pools/selection-strategies/worker-choice-strategy-context.ts

index 50747dfebefe72021444c497fdeaf2202901fee1..8a0da77466f406c9e76eee5eeead607eb2435ca8 100644 (file)
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+### Changed
+
+- Add infinite retries support in worker choice strategy.
+
 ## [3.0.11] - 2023-12-11
 
 ### Fixed
index 28282ac2314bc05322098d09ad5ad0d08a163595..4a0a3eb253b1bc5159b6fffb1ccdfee381c7d629 100644 (file)
@@ -113,7 +113,7 @@ An object with these properties:
 - `workerChoiceStrategyOptions` (optional) - The worker choice strategy options object to use in this pool.  
   Properties:
 
-  - `retries` (optional) - The number of retries to perform if no worker is eligible.
+  - `retries` (optional) - The number of retries to perform if no worker is eligible. `Infinity` means infinite retries.
   - `measurement` (optional) - The measurement to use in worker choice strategies: `runTime`, `waitTime` or `elu`.
   - `runTime` (optional) - Use the tasks [simple moving median](./worker-choice-strategies.md#simple-moving-median) runtime instead of the tasks simple moving average runtime in worker choice strategies.
   - `waitTime` (optional) - Use the tasks [simple moving median](./worker-choice-strategies.md#simple-moving-median) wait time instead of the tasks simple moving average wait time in worker choice strategies.
index e3aaaea36c4fbfaf628d4d1bea31c64bfbb0d6a3..0ca75e51a46a4b24b5244980afa1fc39f87acfb6 100644 (file)
@@ -178,7 +178,8 @@ export class WorkerChoiceStrategyContext<
     ).choose()
     if (
       workerNodeKey == null &&
-      this.retriesCount < (this.opts.retries as number)
+      (this.retriesCount < (this.opts.retries as number) ||
+        this.opts.retries === Infinity)
     ) {
       this.retriesCount++
       return this.execute()