From e3f02a4dae9ae7d089d33e70970f0c87cea99834 Mon Sep 17 00:00:00 2001 From: "roman.ivanitskii" Date: Tue, 28 Jan 2025 13:56:46 +0100 Subject: [PATCH] [metrics][performance-tests] Fix span matching logic in metrics collector GitOrigin-RevId: 1bc20e3f95130c990ee813c4352fa1ebb2f9169a --- .../tools/ide/metrics/collector/telemetry/openTelemetry.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/telemetry/openTelemetry.kt b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/telemetry/openTelemetry.kt index 36bc3c852f7f..2fa9e4b446d2 100644 --- a/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/telemetry/openTelemetry.kt +++ b/tools/intellij.tools.ide.metrics.collector/src/com/intellij/tools/ide/metrics/collector/telemetry/openTelemetry.kt @@ -5,6 +5,7 @@ package com.intellij.tools.ide.metrics.collector.telemetry import com.intellij.openapi.diagnostic.logger import com.intellij.tools.ide.metrics.collector.metrics.PerformanceMetrics.Metric import java.nio.file.Path +import kotlin.math.min const val TOTAL_TEST_TIMER_NAME: String = "test" const val DEFAULT_SPAN_NAME: String = "performance_test" @@ -40,9 +41,10 @@ fun getMetricsBasedOnDiffBetweenSpans(name: String, file: Path, fromSpanName: St } val metrics = mutableListOf() val sortedFromSpans = fromSpanMetrics.sortedByDescending { info -> info.startTimestamp } - val spanIds = sortedFromSpans.map { it.spanId }.toSet() + val spanIds = sortedFromSpans.map { it.spanId to it.parentSpanId }.flatMap { listOf(it.first, it.second) }.toSet() val sortedToSpans = toSpanMetrics.sortedByDescending { info -> info.startTimestamp }.filter { spanIds.contains(it.parentSpanId) } - for (i in fromSpanMetrics.indices) { + val minSize = min(fromSpanMetrics.size, sortedToSpans.size) + for (i in 0.. minSize - 1) { val currentToSpan = sortedToSpans[i] val currentFromSpan = sortedFromSpans[i] if (currentFromSpan.spanId != currentToSpan.parentSpanId) {