mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
parent
9ba56d9349
commit
c6db73f0bf
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user