Tempo: Fix regression caused by #79938 (#80465)

This commit is contained in:
Fabrizio 2024-01-12 17:35:24 +01:00 committed by GitHub
parent 9ba56d9349
commit c6db73f0bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -734,11 +734,36 @@ export function createTableFrameFromTraceQlQuery(
}
export function createTableFrameFromTraceQlQueryAsSpans(
data: TraceSearchMetadata[],
data: TraceSearchMetadata[] | undefined,
instanceSettings: DataSourceInstanceSettings
): DataFrame[] {
const spanDynamicAttrs: Record<string, FieldDTO> = {};
let hasNameAttribute = false;
data?.forEach((trace) =>
getSpanSets(trace).forEach((ss) => {
ss.attributes?.forEach((attr) => {
spanDynamicAttrs[attr.key] = {
name: attr.key,
type: FieldType.string,
config: { displayNameFromDS: attr.key },
};
});
ss.spans.forEach((span) => {
if (span.name) {
hasNameAttribute = true;
}
span.attributes?.forEach((attr) => {
spanDynamicAttrs[attr.key] = {
name: attr.key,
type: FieldType.string,
config: { displayNameFromDS: attr.key },
};
});
});
})
);
const frame = new MutableDataFrame({
name: 'Spans',
refId: 'traces',
@ -830,41 +855,10 @@ export function createTableFrameFromTraceQlQueryAsSpans(
},
});
// According to the parameter type, `data` should never be undefined of null, but the old code had
// entries such as `!data` or `data?`, so we keep this check just for safety
if (data === undefined || data === null) {
console.error(`Unexpected ${data} value for \`data\``);
if (!data || !data.length) {
return [frame];
}
if (!data.length) {
return [frame];
}
data.forEach((trace) =>
getSpanSets(trace).forEach((ss) => {
ss.attributes?.forEach((attr) => {
spanDynamicAttrs[attr.key] = {
name: attr.key,
type: FieldType.string,
config: { displayNameFromDS: attr.key },
};
});
ss.spans.forEach((span) => {
if (span.name) {
hasNameAttribute = true;
}
span.attributes?.forEach((attr) => {
spanDynamicAttrs[attr.key] = {
name: attr.key,
type: FieldType.string,
config: { displayNameFromDS: attr.key },
};
});
});
})
);
data
// Show the most recent traces
.sort((a, b) => parseInt(b?.startTimeUnixNano!, 10) / 1000000 - parseInt(a?.startTimeUnixNano!, 10) / 1000000)