From 5fe192a893e24fe7350762795b3a66b07711cb28 Mon Sep 17 00:00:00 2001 From: Joe Elliott Date: Tue, 6 Jan 2026 07:47:52 -0500 Subject: [PATCH] Tempo: Fix multiple streaming TraceQL metrics queries being conflated into one (#114360) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Correctly stream multiple metrics series Signed-off-by: Joe Elliott * cleanup Signed-off-by: Joe Elliott * prettier fix --------- Signed-off-by: Joe Elliott Co-authored-by: Andre Pereira Co-authored-by: Zoltán Bedi --- public/app/plugins/datasource/tempo/datasource.ts | 4 ++-- public/app/plugins/datasource/tempo/streaming.ts | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/public/app/plugins/datasource/tempo/datasource.ts b/public/app/plugins/datasource/tempo/datasource.ts index bccd697c1db..67b7e708a19 100644 --- a/public/app/plugins/datasource/tempo/datasource.ts +++ b/public/app/plugins/datasource/tempo/datasource.ts @@ -811,7 +811,7 @@ export class TempoDatasource extends DataSourceWithBackend doTempoSearchStreaming( - { ...target, query }, + { ...target, query: this.applyVariables(target, options.scopedVars).query }, this, // the datasource options, this.instanceSettings @@ -857,7 +857,7 @@ export class TempoDatasource extends DataSourceWithBackend doTempoMetricsStreaming( - { ...target, query }, + { ...target, query: this.applyVariables(target, options.scopedVars).query }, this, // the datasource options ) diff --git a/public/app/plugins/datasource/tempo/streaming.ts b/public/app/plugins/datasource/tempo/streaming.ts index 3ea011d3185..ef72768a6d1 100644 --- a/public/app/plugins/datasource/tempo/streaming.ts +++ b/public/app/plugins/datasource/tempo/streaming.ts @@ -5,6 +5,7 @@ import { v4 as uuidv4 } from 'uuid'; import { DataFrame, dataFrameFromJSON, + DataFrameJSON, DataQueryRequest, DataQueryResponse, DataSourceInstanceSettings, @@ -165,7 +166,15 @@ export function doTempoMetricsStreaming( } newResult = { - data: data?.map(dataFrameFromJSON) ?? [], + data: + data?.map((frame: DataFrameJSON) => { + const df = dataFrameFromJSON(frame); + // preserve the query's refId to prevent conflation of series from different queries + if (query.refId) { + df.refId = query.refId; + } + return df; + }) ?? [], state, }; }