[v9.5.x] Tempo: Fix get label values based on CoreApp type (#68513)

Tempo: Fix get label values based on CoreApp type (#68463)

Fix and update test

(cherry picked from commit a1f76af15a)
This commit is contained in:
Joey
2023-05-16 08:19:46 +01:00
committed by GitHub
parent 9533da75de
commit 70641c7718
2 changed files with 18 additions and 2 deletions
@@ -12,6 +12,7 @@ import {
LoadingState,
MutableDataFrame,
PluginType,
CoreApp,
} from '@grafana/data';
import {
BackendDataSourceResponse,
@@ -450,7 +451,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);
@@ -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.toArray() ?? []);
let labels = [];
if (request.app === CoreApp.Explore) {
if (rateResponse.data[0][0]?.fields[1]?.values) {
labels = rateResponse.data[0][0]?.fields[1]?.values.toArray();
}
} 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);