fix: sort round weights descending in IWRR
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 21 Nov 2023 19:20:19 +0000 (20:20 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 21 Nov 2023 19:20:19 +0000 (20:20 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
.vscode/settings.json
CHANGELOG.md
docs/api.md
docs/worker-choice-strategies.md
src/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.ts

index a6c38972d1155165881f9c7367705121f9f867a9..258931c13de2b990bf47e0639ac43172b11247bd 100644 (file)
@@ -22,7 +22,7 @@
     "FOSS",
     "Gitter",
     "inheritDoc",
-    "IWWR",
+    "IWRR",
     "jaywcjlove",
     "lcov",
     "libuv",
index c1cad1049d115655ba24070b5b7c93bb6d0e9f83..1e17cee693ac692ea9ee8a2f52675c359a179e0a 100644 (file)
@@ -9,7 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-- Ensure pool statuses are checked at initialization, `start()` or `destroy()`
+- Ensure pool statuses are checked at initialization, `start()` or `destroy()`.
+- Sort IWRR worker choice strategy round weights in descending order.
 
 ## [3.0.5] - 2023-10-27
 
index f9af05a73780e225d50f0b97ebbbca4f35a433c3..2b917c46c362157b7616771d2eab174f7dfa9463 100644 (file)
@@ -41,7 +41,7 @@
 
 ### `pool.execute(data, name, transferList)`
 
-`data` (optional) An object that you want to pass to your worker implementation.  
+`data` (optional) An object that you want to pass to your worker task function implementation.  
 `name` (optional) A string with the task function name that you want to execute on the worker. Default: `'default'`  
 `transferList` (optional) An array of transferable objects that you want to transfer to your [worker_threads](https://nodejs.org/api/worker_threads.html) worker implementation.
 
index bd5f9e2bfc58d1aeef798ef659a84e9305a87ca5..f7380dd6dc543a7c0dc0b55d2085de3a958458df 100644 (file)
@@ -24,7 +24,7 @@ The worker weights are maximum tasks execution time. Once the worker has reached
 
 ### Interleaved weighted round robin (experimental)
 
-The worker weights are maximum tasks execution time. The rounds are the deduplicated worker weights.  
+The worker weights are maximum tasks execution time. The rounds are the deduplicated worker weights in descending order.  
 During a round, if the worker weight is superior or equal to the current round weight and its tasks execution time is inferior to the current round weight, the task is assigned to the worker. Once all workers weight have been tested, the next round starts.  
 The default worker weights is the same for each and computed given the CPU cores speed and theirs numbers. So the default 'rounds' consists of a unique worker weight.
 
index eee39ec8d646da13324c7050e86afc33882fa22c..9c863b56f980bffe9f2eb6b86244bb3ad1573033 100644 (file)
@@ -170,7 +170,7 @@ export class InterleavedWeightedRoundRobinWorkerChoiceStrategy<
       ...new Set(
         Object.values(this.opts.weights)
           .slice()
-          .sort((a, b) => a - b)
+          .sort((a, b) => b - a)
       )
     ]
   }