fix: ensure a dynamic scheduled for removal can't be used
[poolifier.git] / src / pools / selection-strategies / round-robin-worker-choice-strategy.ts
index aa3ee108ced7d528f1d5ea90204c4306f841226c..19dd3872c116723756fb146a4a57506b10523ab0 100644 (file)
@@ -70,10 +70,12 @@ export class RoundRobinWorkerChoiceStrategy<
   }
 
   private roundRobinNextWorkerNodeKey (): number | undefined {
-    this.nextWorkerNodeKey =
-      this.nextWorkerNodeKey === this.pool.workerNodes.length - 1
-        ? 0
-        : (this.nextWorkerNodeKey ?? this.previousWorkerNodeKey) + 1
+    do {
+      this.nextWorkerNodeKey =
+        this.nextWorkerNodeKey === this.pool.workerNodes.length - 1
+          ? 0
+          : (this.nextWorkerNodeKey ?? this.previousWorkerNodeKey) + 1
+    } while (!this.isWorkerNodeReady(this.nextWorkerNodeKey))
     return this.nextWorkerNodeKey
   }
 }