From a1f76af15ac38717f4c7fa182196c51f3e42bfbb Mon Sep 17 00:00:00 2001 From: Joey <90795735+joey-grafana@users.noreply.github.com> Date: Mon, 15 May 2023 14:27:27 +0100 Subject: [PATCH] Tempo: Fix get label values based on CoreApp type (#68463) Fix and update test --- .../plugins/datasource/tempo/datasource.test.ts | 3 ++- .../app/plugins/datasource/tempo/datasource.ts | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/public/app/plugins/datasource/tempo/datasource.test.ts b/public/app/plugins/datasource/tempo/datasource.test.ts index fda8084249c..1a645e1b7af 100644 --- a/public/app/plugins/datasource/tempo/datasource.test.ts +++ b/public/app/plugins/datasource/tempo/datasource.test.ts @@ -11,6 +11,7 @@ import { LoadingState, createDataFrame, PluginType, + CoreApp, } from '@grafana/data'; import { BackendDataSourceResponse, @@ -449,7 +450,7 @@ describe('Tempo service graph view', () => { }); setDataSourceSrv(backendSrvWithPrometheus as any); const response = await lastValueFrom( - ds.query({ targets: [{ queryType: 'serviceMap' }], range: getDefaultTimeRange() } as any) + ds.query({ targets: [{ queryType: 'serviceMap' }], range: getDefaultTimeRange(), app: CoreApp.Explore } as any) ); expect(response.data).toHaveLength(3); diff --git a/public/app/plugins/datasource/tempo/datasource.ts b/public/app/plugins/datasource/tempo/datasource.ts index 9ed53067904..33b167c153c 100644 --- a/public/app/plugins/datasource/tempo/datasource.ts +++ b/public/app/plugins/datasource/tempo/datasource.ts @@ -3,6 +3,8 @@ import { EMPTY, from, lastValueFrom, merge, Observable, of, throwError } from 'r import { catchError, concatMap, map, mergeMap, toArray } from 'rxjs/operators'; import { + CoreApp, + DataFrame, DataQueryRequest, DataQueryResponse, DataQueryResponseData, @@ -597,7 +599,20 @@ function errorAndDurationQuery( let serviceGraphViewMetrics = []; let errorRateBySpanName = ''; let durationsBySpanName: string[] = []; - const spanNames = getEscapedSpanNames(rateResponse.data[0][0]?.fields[1]?.values ?? []); + + let labels = []; + if (request.app === CoreApp.Explore) { + if (rateResponse.data[0][0]?.fields[1]?.values) { + labels = rateResponse.data[0][0]?.fields[1]?.values; + } + } else if (rateResponse.data[0]) { + rateResponse.data[0].map((df: DataFrame) => { + if (df.fields[1]?.labels && df.fields[1]?.labels['span_name']) { + labels.push(df.fields[1]?.labels['span_name']); + } + }); + } + const spanNames = getEscapedSpanNames(labels); if (spanNames.length > 0) { errorRateBySpanName = buildExpr(errorRateMetric, 'span_name=~"' + spanNames.join('|') + '"', request);