-import { DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS } from '../../utils'
import type { IPool } from '../pool'
import type { IWorker } from '../worker'
import { AbstractWorkerChoiceStrategy } from './abstract-worker-choice-strategy'
import type {
IWorkerChoiceStrategy,
- WorkerChoiceStrategyOptions
+ InternalWorkerChoiceStrategyOptions
} from './selection-strategies-types'
/**
/** @inheritDoc */
public constructor (
pool: IPool<Worker, Data, Response>,
- opts: WorkerChoiceStrategyOptions = DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS
+ opts: InternalWorkerChoiceStrategyOptions
) {
super(pool, opts)
- this.setTaskStatisticsRequirements(this.opts)
}
/** @inheritDoc */
private leastUsedNextWorkerNodeKey (): number | undefined {
return this.pool.workerNodes.reduce(
(minWorkerNodeKey, workerNode, workerNodeKey, workerNodes) => {
- return workerNode.usage.tasks.executed +
- workerNode.usage.tasks.executing +
- workerNode.usage.tasks.queued <
- workerNodes[minWorkerNodeKey].usage.tasks.executed +
- workerNodes[minWorkerNodeKey].usage.tasks.executing +
- workerNodes[minWorkerNodeKey].usage.tasks.queued
+ return this.isWorkerNodeReady(workerNodeKey) &&
+ workerNode.usage.tasks.executed +
+ workerNode.usage.tasks.executing +
+ workerNode.usage.tasks.queued <
+ workerNodes[minWorkerNodeKey].usage.tasks.executed +
+ workerNodes[minWorkerNodeKey].usage.tasks.executing +
+ workerNodes[minWorkerNodeKey].usage.tasks.queued
? workerNodeKey
: minWorkerNodeKey
},