fix: ensure no tasks are queued when trying to soft kill a dynamic worker
[poolifier.git] / src / pools / abstract-pool.ts
index 6f5f3aeb1f581ea3306169cdb35d2bf9b71e0c01..21cfb395785cdc14a82987498b85236b4295c8dd 100644 (file)
@@ -720,13 +720,17 @@ export abstract class AbstractPool<
       const currentWorkerNodeKey = this.getWorkerNodeKey(worker)
       if (
         isKillBehavior(KillBehaviors.HARD, message.kill) ||
-        (message.kill != null &&
+        (this.opts.enableTasksQueue === false &&
+          message.kill != null &&
           this.workerNodes[currentWorkerNodeKey].workerUsage.tasks.executing ===
-            0)
+            0) ||
+        (this.opts.enableTasksQueue === true &&
+          message.kill != null &&
+          this.workerNodes[currentWorkerNodeKey].workerUsage.tasks.executing ===
+            0 &&
+          this.tasksQueueSize(currentWorkerNodeKey) === 0)
       ) {
         // Kill message received from the worker: no new tasks are submitted to that worker for a while ( > maxInactiveTime)
-        this.flushTasksQueue(currentWorkerNodeKey)
-        // FIXME: wait for tasks to be finished
         void (this.destroyWorker(worker) as Promise<void>)
       }
     })