feat: switch event emission to async context friendly alternative
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 29 May 2023 21:04:21 +0000 (23:04 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 29 May 2023 21:04:21 +0000 (23:04 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
README.md
benchmarks/versus-external-pools/package.json
package.json
src/pools/pool.ts
src/pools/selection-strategies/abstract-worker-choice-strategy.ts
src/pools/selection-strategies/selection-strategies-types.ts
tests/pools/selection-strategies/worker-choice-strategy-context.test.js

index 18b0d78a10645439c47d226e9a7587dbfc0fdcbc..3eeebed184aa73b2417537a8b3e3e48d5af10f8a 100644 (file)
--- a/README.md
+++ b/README.md
@@ -145,7 +145,7 @@ Remember that workers can only send and receive serializable data.
 
 ## Node versions
 
-Node versions >= 16.x are supported.
+Node versions >= 16.14.x are supported.
 
 ## [API](https://poolifier.github.io/poolifier/)
 
@@ -173,7 +173,7 @@ Node versions >= 16.x are supported.
 - `workerChoiceStrategyOptions` (optional) - The worker choice strategy options object to use in this pool.  
   Properties:
 
-  - `medRunTime` (optional) - Use the tasks median run time instead of the tasks average run time in worker choice strategies.
+  - `medRunTime` (optional) - Use the tasks median runtime instead of the tasks average runtime in worker choice strategies.
   - `weights` (optional) - The worker weights to use in the weighted round robin worker choice strategy: `{ 0: 200, 1: 300, ..., n: 100 }`
 
   Default: `{ medRunTime: false }`
index 9d1ecc6b998e5446703771f8f2525b1fbd6ced81..b466e3c6fd6b73c30bab04bb7b8bfc65c1e14e9a 100644 (file)
@@ -6,7 +6,7 @@
   "main": "index.js",
   "author": "pioardi",
   "engines": {
-    "node": ">=14.14.0",
+    "node": ">=16.14.0",
     "pnpm": ">=8.6.0"
   },
   "volta": {
index 16edd5ca3e93c7bc4723847bc4fd9450a0fb3f99..6a189663a45948ba4fd423b418de5f68a7e4a8b3 100644 (file)
@@ -43,7 +43,7 @@
     ]
   },
   "engines": {
-    "node": ">=16.0.0",
+    "node": ">=16.14.0",
     "pnpm": ">=8.6.0"
   },
   "volta": {
index 0a015476f3af30e9750b092aadbd428282784b3f..14b30812d14bd21e55c0af4aee77db5daf8bc7e4 100644 (file)
@@ -1,4 +1,4 @@
-import EventEmitter from 'node:events'
+import EventEmitterAsyncResource from 'node:events'
 import type {
   ErrorHandler,
   ExitHandler,
@@ -32,7 +32,7 @@ export enum PoolType {
 /**
  * Pool events emitter.
  */
-export class PoolEmitter extends EventEmitter {}
+export class PoolEmitter extends EventEmitterAsyncResource {}
 
 /**
  * Enumeration of pool events.
index a4455d28a8e33c5bac1bceaf679b8feab5de533b..d969f0c0ad5ca224de0d30356d517821b1e76c3c 100644 (file)
@@ -88,12 +88,12 @@ export abstract class AbstractWorkerChoiceStrategy<
   }
 
   /**
-   * Gets the worker task run time.
-   * If the required statistics are `avgRunTime`, the average run time is returned.
-   * If the required statistics are `medRunTime`, the median run time is returned.
+   * Gets the worker task runtime.
+   * If the required statistics are `avgRunTime`, the average runtime is returned.
+   * If the required statistics are `medRunTime`, the median runtime is returned.
    *
    * @param workerNodeKey - The worker node key.
-   * @returns The worker task run time.
+   * @returns The worker task runtime.
    */
   protected getWorkerTaskRunTime (workerNodeKey: number): number {
     return this.requiredStatistics.medRunTime
index b95cf7f3ae22b6338fcf48940415e23337307715..659706cefca3b91d71db31ede78ce63870a506f6 100644 (file)
@@ -34,7 +34,7 @@ export type WorkerChoiceStrategy = keyof typeof WorkerChoiceStrategies
  */
 export interface WorkerChoiceStrategyOptions {
   /**
-   * Use tasks median run time instead of average run time.
+   * Use tasks median runtime instead of average runtime.
    *
    * @defaultValue false
    */
index f04013d99c92ad0e61dae665f79df61dda1d2274..fa380a5ae4320f0f4056bd48462e940992c60288 100644 (file)
@@ -322,7 +322,7 @@ describe('Worker choice strategy context test suite', () => {
     )
   })
 
-  it('Verify that worker choice strategy options enable median run time pool statistics', () => {
+  it('Verify that worker choice strategy options enable median runtime pool statistics', () => {
     const wwrWorkerChoiceStrategy = WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
     let workerChoiceStrategyContext = new WorkerChoiceStrategyContext(
       fixedPool,