import { performance } from 'node:perf_hooks'
import type { MessageValue, PromiseResponseWrapper } from '../utility-types'
import {
+ DEFAULT_TASK_NAME,
DEFAULT_WORKER_CHOICE_STRATEGY_OPTIONS,
EMPTY_FUNCTION,
isKillBehavior,
),
maxQueuedTasks: this.workerNodes.reduce(
(accumulator, workerNode) =>
- accumulator + workerNode.usage.tasks.maxQueued,
+ accumulator + (workerNode.usage.tasks?.maxQueued ?? 0),
0
),
failedTasks: this.workerNodes.reduce(
const timestamp = performance.now()
const workerNodeKey = this.chooseWorkerNode()
const submittedTask: Task<Data> = {
- name,
+ name: name ?? DEFAULT_TASK_NAME,
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
data: data ?? ({} as Data),
timestamp,
const workerUsage = this.workerNodes[workerNodeKey].usage
++workerUsage.tasks.executing
this.updateWaitTimeWorkerUsage(workerUsage, task)
+ const tasksWorkerUsage = this.workerNodes[
+ workerNodeKey
+ ].getTasksWorkerUsage(task.name as string) as WorkerUsage
+ ++tasksWorkerUsage.tasks.executing
+ this.updateWaitTimeWorkerUsage(tasksWorkerUsage, task)
}
/**
worker: Worker,
message: MessageValue<Response>
): void {
- const workerUsage = this.workerNodes[this.getWorkerNodeKey(worker)].usage
+ const workerNodeKey = this.getWorkerNodeKey(worker)
+ const workerUsage = this.workerNodes[workerNodeKey].usage
this.updateTaskStatisticsWorkerUsage(workerUsage, message)
this.updateRunTimeWorkerUsage(workerUsage, message)
this.updateEluWorkerUsage(workerUsage, message)
+ const tasksWorkerUsage = this.workerNodes[
+ workerNodeKey
+ ].getTasksWorkerUsage(message.name as string) as WorkerUsage
+ this.updateTaskStatisticsWorkerUsage(tasksWorkerUsage, message)
+ this.updateRunTimeWorkerUsage(tasksWorkerUsage, message)
+ this.updateEluWorkerUsage(tasksWorkerUsage, message)
}
private updateTaskStatisticsWorkerUsage (