Skip to content

Commit e445aa7

Browse files
committed
refactor: add worker strategy name to help UTs debug
Signed-off-by: Jérôme Benoit <[email protected]>
1 parent dcdb30a commit e445aa7

12 files changed

+76
-25
lines changed

src/pools/selection-strategies/abstract-worker-choice-strategy.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import type {
55
IWorkerChoiceStrategy,
66
StrategyPolicy,
77
TaskStatisticsRequirements,
8+
WorkerChoiceStrategy,
89
WorkerChoiceStrategyOptions,
910
} from './selection-strategies-types.ts'
1011
import {
@@ -24,6 +25,9 @@ export abstract class AbstractWorkerChoiceStrategy<
2425
Data = unknown,
2526
Response = unknown,
2627
> implements IWorkerChoiceStrategy {
28+
/** @inheritDoc */
29+
public abstract readonly name: WorkerChoiceStrategy
30+
2731
/**
2832
* The next worker node key.
2933
*/

src/pools/selection-strategies/fair-share-worker-choice-strategy.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import type { IPool } from '../pool.ts'
22
import type { IWorker } from '../worker.ts'
33
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy.ts'
4-
import type {
5-
IWorkerChoiceStrategy,
6-
TaskStatisticsRequirements,
7-
WorkerChoiceStrategyOptions,
4+
import {
5+
type IWorkerChoiceStrategy,
6+
type TaskStatisticsRequirements,
7+
WorkerChoiceStrategies,
8+
type WorkerChoiceStrategy,
9+
type WorkerChoiceStrategyOptions,
810
} from './selection-strategies-types.ts'
911

1012
/**
@@ -21,6 +23,9 @@ export class FairShareWorkerChoiceStrategy<
2123
Response = unknown,
2224
> extends AbstractWorkerChoiceStrategy<Worker, Data, Response>
2325
implements IWorkerChoiceStrategy {
26+
/** @inheritDoc */
27+
public readonly name: WorkerChoiceStrategy = WorkerChoiceStrategies.FAIR_SHARE
28+
2429
/** @inheritDoc */
2530
public override readonly taskStatisticsRequirements:
2631
TaskStatisticsRequirements = Object.freeze({

src/pools/selection-strategies/interleaved-weighted-round-robin-worker-choice-strategy.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ import type { IPool } from '../pool.ts'
22
import { DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS } from '../utils.ts'
33
import type { IWorker } from '../worker.ts'
44
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy.ts'
5-
import type {
6-
IWorkerChoiceStrategy,
7-
TaskStatisticsRequirements,
8-
WorkerChoiceStrategyOptions,
5+
import {
6+
type IWorkerChoiceStrategy,
7+
type TaskStatisticsRequirements,
8+
WorkerChoiceStrategies,
9+
type WorkerChoiceStrategy,
10+
type WorkerChoiceStrategyOptions,
911
} from './selection-strategies-types.ts'
1012

1113
/**
@@ -21,6 +23,10 @@ export class InterleavedWeightedRoundRobinWorkerChoiceStrategy<
2123
Response = unknown,
2224
> extends AbstractWorkerChoiceStrategy<Worker, Data, Response>
2325
implements IWorkerChoiceStrategy {
26+
/** @inheritDoc */
27+
public readonly name: WorkerChoiceStrategy =
28+
WorkerChoiceStrategies.INTERLEAVED_WEIGHTED_ROUND_ROBIN
29+
2430
/** @inheritDoc */
2531
public override readonly taskStatisticsRequirements:
2632
TaskStatisticsRequirements = Object.freeze({

src/pools/selection-strategies/least-busy-worker-choice-strategy.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ import type { IPool } from '../pool.ts'
22
import { DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS } from '../utils.ts'
33
import type { IWorker } from '../worker.ts'
44
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy.ts'
5-
import type {
6-
IWorkerChoiceStrategy,
7-
TaskStatisticsRequirements,
8-
WorkerChoiceStrategyOptions,
5+
import {
6+
type IWorkerChoiceStrategy,
7+
type TaskStatisticsRequirements,
8+
WorkerChoiceStrategies,
9+
type WorkerChoiceStrategy,
10+
type WorkerChoiceStrategyOptions,
911
} from './selection-strategies-types.ts'
1012

1113
/**
@@ -21,6 +23,9 @@ export class LeastBusyWorkerChoiceStrategy<
2123
Response = unknown,
2224
> extends AbstractWorkerChoiceStrategy<Worker, Data, Response>
2325
implements IWorkerChoiceStrategy {
26+
/** @inheritDoc */
27+
public readonly name: WorkerChoiceStrategy = WorkerChoiceStrategies.LEAST_BUSY
28+
2429
/** @inheritDoc */
2530
public override readonly taskStatisticsRequirements:
2631
TaskStatisticsRequirements = Object.freeze({

src/pools/selection-strategies/least-elu-worker-choice-strategy.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy.
55
import type {
66
IWorkerChoiceStrategy,
77
TaskStatisticsRequirements,
8+
WorkerChoiceStrategy,
89
WorkerChoiceStrategyOptions,
910
} from './selection-strategies-types.ts'
1011

@@ -21,6 +22,10 @@ export class LeastEluWorkerChoiceStrategy<
2122
Response = unknown,
2223
> extends AbstractWorkerChoiceStrategy<Worker, Data, Response>
2324
implements IWorkerChoiceStrategy {
25+
/** @inheritDoc */
26+
// public readonly name: WorkerChoiceStrategy = WorkerChoiceStrategies.LEAST_ELU
27+
public readonly name: WorkerChoiceStrategy = 'LEAST_ELU'
28+
2429
/** @inheritDoc */
2530
public override readonly taskStatisticsRequirements:
2631
TaskStatisticsRequirements = Object.freeze({

src/pools/selection-strategies/least-used-worker-choice-strategy.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import type { IPool } from '../pool.ts'
22
import type { IWorker } from '../worker.ts'
33
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy.ts'
4-
import type {
5-
IWorkerChoiceStrategy,
6-
WorkerChoiceStrategyOptions,
4+
import {
5+
type IWorkerChoiceStrategy,
6+
WorkerChoiceStrategies,
7+
type WorkerChoiceStrategy,
8+
type WorkerChoiceStrategyOptions,
79
} from './selection-strategies-types.ts'
810

911
/**
@@ -19,6 +21,9 @@ export class LeastUsedWorkerChoiceStrategy<
1921
Response = unknown,
2022
> extends AbstractWorkerChoiceStrategy<Worker, Data, Response>
2123
implements IWorkerChoiceStrategy {
24+
/** @inheritDoc */
25+
public readonly name: WorkerChoiceStrategy = WorkerChoiceStrategies.LEAST_USED
26+
2227
/** @inheritDoc */
2328
public constructor(
2429
pool: IPool<Worker, Data, Response>,

src/pools/selection-strategies/round-robin-worker-choice-strategy.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import type { IPool } from '../pool.ts'
22
import type { IWorker } from '../worker.ts'
33
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy.ts'
4-
import type {
5-
IWorkerChoiceStrategy,
6-
WorkerChoiceStrategyOptions,
4+
import {
5+
type IWorkerChoiceStrategy,
6+
WorkerChoiceStrategies,
7+
type WorkerChoiceStrategy,
8+
type WorkerChoiceStrategyOptions,
79
} from './selection-strategies-types.ts'
810

911
/**
@@ -19,6 +21,10 @@ export class RoundRobinWorkerChoiceStrategy<
1921
Response = unknown,
2022
> extends AbstractWorkerChoiceStrategy<Worker, Data, Response>
2123
implements IWorkerChoiceStrategy {
24+
/** @inheritDoc */
25+
public readonly name: WorkerChoiceStrategy =
26+
WorkerChoiceStrategies.ROUND_ROBIN
27+
2228
/** @inheritDoc */
2329
public constructor(
2430
pool: IPool<Worker, Data, Response>,

src/pools/selection-strategies/selection-strategies-types.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,10 @@ export interface StrategyPolicy {
176176
* @internal
177177
*/
178178
export interface IWorkerChoiceStrategy {
179+
/**
180+
* The worker choice strategy name.
181+
*/
182+
readonly name: WorkerChoiceStrategy
179183
/**
180184
* Strategy policy.
181185
*/

src/pools/selection-strategies/weighted-round-robin-worker-choice-strategy.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ import type { IPool } from '../pool.ts'
22
import { DEFAULT_MEASUREMENT_STATISTICS_REQUIREMENTS } from '../utils.ts'
33
import type { IWorker } from '../worker.ts'
44
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy.ts'
5-
import type {
6-
IWorkerChoiceStrategy,
7-
TaskStatisticsRequirements,
8-
WorkerChoiceStrategyOptions,
5+
import {
6+
type IWorkerChoiceStrategy,
7+
type TaskStatisticsRequirements,
8+
WorkerChoiceStrategies,
9+
type WorkerChoiceStrategy,
10+
type WorkerChoiceStrategyOptions,
911
} from './selection-strategies-types.ts'
1012

1113
/**
@@ -22,6 +24,10 @@ export class WeightedRoundRobinWorkerChoiceStrategy<
2224
Response = unknown,
2325
> extends AbstractWorkerChoiceStrategy<Worker, Data, Response>
2426
implements IWorkerChoiceStrategy {
27+
/** @inheritDoc */
28+
public readonly name: WorkerChoiceStrategy =
29+
WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN
30+
2531
/** @inheritDoc */
2632
public override readonly taskStatisticsRequirements:
2733
TaskStatisticsRequirements = Object.freeze({

src/pools/selection-strategies/worker-choice-strategies-context.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ export class WorkerChoiceStrategiesContext<
179179
}
180180
if (workerNodeKey == null) {
181181
throw new Error(
182-
`Worker node key chosen is null or undefined after ${retriesCount.toString()} retries`,
182+
`Worker node key chosen by ${workerChoiceStrategy.name} is null or undefined after ${retriesCount.toString()} retries`,
183183
)
184184
}
185185
return workerNodeKey

0 commit comments

Comments
 (0)