refactor: cleanup variable namespace in IWRR code
[poolifier.git] / src / pools / selection-strategies / interleaved-weighted-round-robin-worker-choice-strategy.ts
index 89576e33873f2bfeed8cbb0308b2abd28e0ab13c..b14bb8bc354311b3f6539b1926763cc06705356b 100644 (file)
@@ -76,9 +76,9 @@ export class InterleavedWeightedRoundRobinWorkerChoiceStrategy<
     let roundId: number | undefined
     let workerNodeId: number | undefined
     for (
-      let round = this.currentRoundId;
-      round < this.roundWeights.length;
-      round++
+      let roundIndex = this.currentRoundId;
+      roundIndex < this.roundWeights.length;
+      roundIndex++
     ) {
       for (
         let workerNodeKey = this.currentWorkerNodeId;
@@ -87,8 +87,8 @@ export class InterleavedWeightedRoundRobinWorkerChoiceStrategy<
       ) {
         const workerWeight =
           this.opts.weights?.[workerNodeKey] ?? this.defaultWorkerWeight
-        if (workerWeight >= this.roundWeights[round]) {
-          roundId = round
+        if (workerWeight >= this.roundWeights[roundIndex]) {
+          roundId = roundIndex
           workerNodeId = workerNodeKey
           break
         }
@@ -114,11 +114,12 @@ export class InterleavedWeightedRoundRobinWorkerChoiceStrategy<
     if (this.currentWorkerNodeId === workerNodeKey) {
       if (this.pool.workerNodes.length === 0) {
         this.currentWorkerNodeId = 0
-      } else {
-        this.currentWorkerNodeId =
-          this.currentWorkerNodeId > this.pool.workerNodes.length - 1
-            ? this.pool.workerNodes.length - 1
-            : this.currentWorkerNodeId
+      } else if (this.currentWorkerNodeId > this.pool.workerNodes.length - 1) {
+        this.currentWorkerNodeId = this.pool.workerNodes.length - 1
+        this.currentRoundId =
+          this.currentRoundId === this.roundWeights.length - 1
+            ? 0
+            : this.currentRoundId + 1
       }
     }
     return true