Fix task runtime statistics usage calculation logic
authorJérôme Benoit <jerome.benoit@sap.com>
Mon, 10 Oct 2022 12:33:02 +0000 (14:33 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Mon, 10 Oct 2022 12:33:02 +0000 (14:33 +0200)
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/pools/abstract-pool.ts
src/pools/pool.ts

index e204e1241811c2c0279520706fdce39ad247e881..0136f048cdb761ad6bc8186197634b635d55c3ba 100644 (file)
@@ -226,7 +226,7 @@ export abstract class AbstractPool<
   }
 
   /**
-   * Shut down given worker.
+   * Shutdowns given worker.
    *
    * @param worker A worker within `workers`.
    */
@@ -283,7 +283,7 @@ export abstract class AbstractPool<
   }
 
   /**
-   * Choose a worker for the next task.
+   * Chooses a worker for the next task.
    *
    * The default implementation uses a round robin algorithm to distribute the load.
    *
@@ -294,7 +294,7 @@ export abstract class AbstractPool<
   }
 
   /**
-   * Send a message to the given worker.
+   * Sends a message to the given worker.
    *
    * @param worker The worker which should receive the message.
    * @param message The message.
@@ -457,9 +457,11 @@ export abstract class AbstractPool<
         .requiredStatistics.runTime === true
     ) {
       const tasksUsage = this.workersTasksUsage.get(worker)
-      if (tasksUsage !== undefined && tasksUsage.run !== 0) {
+      if (tasksUsage !== undefined) {
         tasksUsage.runTime += taskRunTime ?? 0
-        tasksUsage.avgRunTime = tasksUsage.runTime / tasksUsage.run
+        if (tasksUsage.run !== 0) {
+          tasksUsage.avgRunTime = tasksUsage.runTime / tasksUsage.run
+        }
         this.workersTasksUsage.set(worker, tasksUsage)
       } else {
         throw new Error(WORKER_NOT_FOUND_TASKS_USAGE_MAP)
index 8da89156ecef7869dd1d8a4e5fe5096a168e8280..6f677da8ba64d695e5b4b82f904f4b21ef1c7208 100644 (file)
@@ -53,7 +53,7 @@ export interface IPool<Data = unknown, Response = unknown> {
    */
   execute(data: Data): Promise<Response>
   /**
-   * Shut down every current worker in this pool.
+   * Shutdowns every current worker in this pool.
    */
   destroy(): Promise<void>
   /**