From dd38581f5c4724c7fc431bcfd42106bbc8c8dd17 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Fri, 9 Jun 2023 13:22:46 +0200 Subject: [PATCH] fix: rely on worker active ELU in least elu strategy MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- .../least-elu-worker-choice-strategy.ts | 2 +- .../selection-strategies/selection-strategies.test.js | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/pools/selection-strategies/least-elu-worker-choice-strategy.ts b/src/pools/selection-strategies/least-elu-worker-choice-strategy.ts index 5cc02bff..9f6ddbf3 100644 --- a/src/pools/selection-strategies/least-elu-worker-choice-strategy.ts +++ b/src/pools/selection-strategies/least-elu-worker-choice-strategy.ts @@ -62,7 +62,7 @@ export class LeastEluWorkerChoiceStrategy< let leastEluWorkerNodeKey!: number for (const [workerNodeKey, workerNode] of this.pool.workerNodes.entries()) { const workerUsage = workerNode.workerUsage - const workerElu = workerUsage.elu?.utilization ?? 0 + const workerElu = workerUsage.elu?.active ?? 0 if (workerElu === 0) { return workerNodeKey } else if (workerElu < minWorkerElu) { diff --git a/tests/pools/selection-strategies/selection-strategies.test.js b/tests/pools/selection-strategies/selection-strategies.test.js index 9e69c330..dbe286b4 100644 --- a/tests/pools/selection-strategies/selection-strategies.test.js +++ b/tests/pools/selection-strategies/selection-strategies.test.js @@ -6,7 +6,6 @@ const { FixedClusterPool } = require('../../../lib') const { CircularArray } = require('../../../lib/circular-array') -const TestUtils = require('../../test-utils') describe('Selection strategies test suite', () => { const min = 0 @@ -649,11 +648,12 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.LEAST_ELU } ) // TODO: Create a better test to cover `LeastEluWorkerChoiceStrategy#choose` + const promises = new Set() const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - await pool.execute() - if (i !== max * maxMultiplier - 1) await TestUtils.sleep(500) + promises.add(pool.execute()) } + await Promise.all(promises) for (const workerNode of pool.workerNodes) { const expectedWorkerUsage = { tasks: { @@ -707,11 +707,12 @@ describe('Selection strategies test suite', () => { { workerChoiceStrategy: WorkerChoiceStrategies.LEAST_ELU } ) // TODO: Create a better test to cover `LeastEluWorkerChoiceStrategy#choose` + const promises = new Set() const maxMultiplier = 2 for (let i = 0; i < max * maxMultiplier; i++) { - await pool.execute() - if (i !== max * maxMultiplier - 1) await TestUtils.sleep(500) + promises.add(pool.execute()) } + await Promise.all(promises) for (const workerNode of pool.workerNodes) { const expectedWorkerUsage = { tasks: { -- 2.34.1