- const workerUsage = this.workerNodes[workerNodeKey].usage
- this.updateTaskStatisticsWorkerUsage(workerUsage, message)
- this.updateRunTimeWorkerUsage(workerUsage, message)
- this.updateEluWorkerUsage(workerUsage, message)
- const taskWorkerUsage = this.workerNodes[workerNodeKey].getTaskWorkerUsage(
- message.taskPerformance?.name ?? DEFAULT_TASK_NAME
- ) as WorkerUsage
- this.updateTaskStatisticsWorkerUsage(taskWorkerUsage, message)
- this.updateRunTimeWorkerUsage(taskWorkerUsage, message)
- this.updateEluWorkerUsage(taskWorkerUsage, message)
+ if (this.workerNodes[workerNodeKey]?.usage != null) {
+ const workerUsage = this.workerNodes[workerNodeKey].usage
+ this.updateTaskStatisticsWorkerUsage(workerUsage, message)
+ this.updateRunTimeWorkerUsage(workerUsage, message)
+ this.updateEluWorkerUsage(workerUsage, message)
+ }
+ if (
+ this.shallUpdateTaskFunctionWorkerUsage(workerNodeKey) &&
+ this.workerNodes[workerNodeKey].getTaskFunctionWorkerUsage(
+ message.taskPerformance?.name as string
+ ) != null
+ ) {
+ const taskFunctionWorkerUsage = this.workerNodes[
+ workerNodeKey
+ ].getTaskFunctionWorkerUsage(
+ message.taskPerformance?.name as string
+ ) as WorkerUsage
+ this.updateTaskStatisticsWorkerUsage(taskFunctionWorkerUsage, message)
+ this.updateRunTimeWorkerUsage(taskFunctionWorkerUsage, message)
+ this.updateEluWorkerUsage(taskFunctionWorkerUsage, message)
+ }
+ }
+
+ /**
+ * Whether the worker node shall update its task function worker usage or not.
+ *
+ * @param workerNodeKey - The worker node key.
+ * @returns `true` if the worker node shall update its task function worker usage, `false` otherwise.
+ */
+ private shallUpdateTaskFunctionWorkerUsage (workerNodeKey: number): boolean {
+ const workerInfo = this.getWorkerInfo(workerNodeKey)
+ return (
+ workerInfo != null &&
+ Array.isArray(workerInfo.taskFunctions) &&
+ workerInfo.taskFunctions.length > 2
+ )