From d04ccfa10339260365c1469bc491c496982e850b Mon Sep 17 00:00:00 2001 From: Sergi Romeu Date: Mon, 13 Apr 2026 10:40:02 +0200 Subject: [PATCH] refactor: pod OTEL metrics table review follow-ups Hoist unpackRow in calculateMetricAverages, use for..of and const for averages per jennypavlova review on #259552. Guard working_set byte conversion with Number.isFinite before dividing to MB, per review question on #259552. Related: https://github.com/elastic/kibana/pull/259552 Made-with: Cursor --- .../pod/use_pod_metrics_table.ts | 47 ++++++++++++------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/x-pack/solutions/observability/plugins/metrics_data_access/public/components/infrastructure_node_metrics_tables/pod/use_pod_metrics_table.ts b/x-pack/solutions/observability/plugins/metrics_data_access/public/components/infrastructure_node_metrics_tables/pod/use_pod_metrics_table.ts index 64fe5ef440f25..2b99c04e7650f 100644 --- a/x-pack/solutions/observability/plugins/metrics_data_access/public/components/infrastructure_node_metrics_tables/pod/use_pod_metrics_table.ts +++ b/x-pack/solutions/observability/plugins/metrics_data_access/public/components/infrastructure_node_metrics_tables/pod/use_pod_metrics_table.ts @@ -176,32 +176,38 @@ function calculateMetricAverages( rows: MetricsExplorerRow[], isOtel: boolean ): Omit { + const unpackRow = isOtel ? unpackMetricsOtel : unpackMetrics; const averageCpuUsagePercentValues: number[] = []; const averageMemoryUsagePercentValues: number[] = []; let memoryUnit: PodNodeMetricsRow['memoryUnit'] = '%'; - rows.forEach((row) => { - const unpacked = isOtel ? unpackMetricsOtel(row) : unpackMetrics(row); + for (const row of rows) { + const { + averageCpuUsagePercent, + averageMemoryUsagePercent, + memoryUnit: rowMemoryUnit, + } = unpackRow(row); - if (unpacked.averageCpuUsagePercent !== null) { - averageCpuUsagePercentValues.push(unpacked.averageCpuUsagePercent); + if (averageCpuUsagePercent !== null) { + averageCpuUsagePercentValues.push(averageCpuUsagePercent); } - if (unpacked.averageMemoryUsagePercent !== null) { - averageMemoryUsagePercentValues.push(unpacked.averageMemoryUsagePercent); + if (averageMemoryUsagePercent !== null) { + averageMemoryUsagePercentValues.push(averageMemoryUsagePercent); } - memoryUnit = unpacked.memoryUnit; - }); - - let averageCpuUsagePercent = null; - if (averageCpuUsagePercentValues.length !== 0) { - averageCpuUsagePercent = scaleUpPercentage(averageOfValues(averageCpuUsagePercentValues)); + memoryUnit = rowMemoryUnit; } - let averageMemoryUsagePercent = null; - if (averageMemoryUsagePercentValues.length !== 0) { - const avg = averageOfValues(averageMemoryUsagePercentValues); - averageMemoryUsagePercent = memoryUnit === '%' ? scaleUpPercentage(avg) : Math.floor(avg); - } + const averageCpuUsagePercent = + averageCpuUsagePercentValues.length === 0 + ? null + : scaleUpPercentage(averageOfValues(averageCpuUsagePercentValues)); + + const averageMemoryUsagePercent = + averageMemoryUsagePercentValues.length === 0 + ? null + : memoryUnit === '%' + ? scaleUpPercentage(averageOfValues(averageMemoryUsagePercentValues)) + : Math.floor(averageOfValues(averageMemoryUsagePercentValues)); return { averageCpuUsagePercent, averageMemoryUsagePercent, memoryUnit }; } @@ -227,9 +233,14 @@ function unpackMetricsOtel(row: MetricsExplorerRow): Omit