This commit is contained in:
Fine 2025-03-06 16:24:16 +08:00
parent 483c39926e
commit b0c9e7d74a
2 changed files with 46 additions and 37 deletions

View File

@ -16,7 +16,6 @@
*/ */
import type { Ref, Span, StatisticsSpan, StatisticsGroupRef, TraceTreeRef } from "@/types/trace"; import type { Ref, Span, StatisticsSpan, StatisticsGroupRef, TraceTreeRef } from "@/types/trace";
import lodash from "lodash";
export default class TraceUtil { export default class TraceUtil {
public static buildTraceDataList(data: Span[]): string[] { public static buildTraceDataList(data: Span[]): string[] {
@ -91,15 +90,19 @@ export default class TraceUtil {
const index = data.findIndex((patchSpan: Span) => { const index = data.findIndex((patchSpan: Span) => {
return patchSpan.segmentId === span.segmentId && patchSpan.spanId === span.spanId - 1; return patchSpan.segmentId === span.segmentId && patchSpan.spanId === span.spanId - 1;
}); });
const fixSpanKeyContent = { const content = fixSpans.find(
traceId: span.traceId, (i: Span) =>
segmentId: span.segmentId, i.traceId === span.traceId &&
spanId: span.spanId - 1, i.segmentId === span.segmentId &&
parentSpanId: span.spanId - 2, i.spanId === span.spanId - 1 &&
}; i.parentSpanId === span.spanId - 2,
if (index === -1 && !lodash.find(fixSpans, fixSpanKeyContent)) { );
if (index === -1 && !content) {
fixSpans.push({ fixSpans.push({
...fixSpanKeyContent, traceId: span.traceId,
segmentId: span.segmentId,
spanId: span.spanId - 1,
parentSpanId: span.spanId - 2,
refs: [], refs: [],
endpointName: `VNode: ${span.segmentId}`, endpointName: `VNode: ${span.segmentId}`,
serviceCode: "VirtualNode", serviceCode: "VirtualNode",
@ -125,16 +128,20 @@ export default class TraceUtil {
}); });
if (index === -1) { if (index === -1) {
// create a known broken node. // create a known broken node.
const parentSpanId: number = ref.parentSpanId; const parentSpanId = ref.parentSpanId > -1 ? 0 : -1;
const fixSpanKeyContent = { const item = fixSpans.find(
traceId: ref.traceId, (i: Span) =>
segmentId: ref.parentSegmentId, i.traceId === ref.traceId &&
spanId: parentSpanId, i.segmentId === ref.parentSegmentId &&
parentSpanId: parentSpanId > -1 ? 0 : -1, i.spanId === ref.parentSpanId &&
}; i.parentSpanId === parentSpanId,
if (!lodash.find(fixSpans, fixSpanKeyContent)) { );
if (!item) {
fixSpans.push({ fixSpans.push({
...fixSpanKeyContent, traceId: ref.traceId,
segmentId: ref.parentSegmentId,
spanId: ref.parentSpanId,
parentSpanId: parentSpanId,
refs: [], refs: [],
endpointName: `VNode: ${ref.parentSegmentId}`, endpointName: `VNode: ${ref.parentSegmentId}`,
serviceCode: "VirtualNode", serviceCode: "VirtualNode",
@ -151,16 +158,20 @@ export default class TraceUtil {
}); });
} }
// if root broken node is not exist, create a root broken node. // if root broken node is not exist, create a root broken node.
if (fixSpanKeyContent.parentSpanId > -1) { if (parentSpanId > -1) {
const fixRootSpanKeyContent = { const item = fixSpans.find(
traceId: ref.traceId, (i: Span) =>
segmentId: ref.parentSegmentId, i.traceId === ref.traceId &&
spanId: 0, i.segmentId === ref.parentSegmentId &&
parentSpanId: -1, i.spanId === 0 &&
}; i.parentSpanId === -1,
if (!lodash.find(fixSpans, fixRootSpanKeyContent)) { );
if (!item) {
fixSpans.push({ fixSpans.push({
...fixRootSpanKeyContent, traceId: ref.traceId,
segmentId: ref.parentSegmentId,
spanId: 0,
parentSpanId: -1,
refs: [], refs: [],
endpointName: `VNode: ${ref.parentSegmentId}`, endpointName: `VNode: ${ref.parentSegmentId}`,
serviceCode: "VirtualNode", serviceCode: "VirtualNode",
@ -210,13 +221,14 @@ export default class TraceUtil {
} }
} }
if (curSegment.isBroken) { if (curSegment.isBroken) {
const children = lodash.filter(data, (span: Span) => { const children = data.filter((span: Span) =>
return lodash.find(span.refs, { span.refs.find(
traceId: curSegment.traceId, (d) =>
parentSegmentId: curSegment.segmentId, d.traceId === curSegment.traceId &&
parentSpanId: curSegment.spanId, d.parentSegmentId === curSegment.segmentId &&
}); d.parentSpanId === curSegment.spanId,
}) as Span[]; ),
);
if (children.length) { if (children.length) {
curSegment.children = curSegment.children || []; curSegment.children = curSegment.children || [];
curSegment.children.push(...children); curSegment.children.push(...children);

View File

@ -90,9 +90,6 @@ export default ({ mode }: ConfigEnv): UserConfig => {
assetFileNames: "static/[ext]/[name]-[hash].[ext]", assetFileNames: "static/[ext]/[name]-[hash].[ext]",
manualChunks(id) { manualChunks(id) {
if (id.includes("node_modules")) { if (id.includes("node_modules")) {
if (id.includes("lodash")) {
return "lodash";
}
if (id.includes("echarts")) { if (id.includes("echarts")) {
return "echarts"; return "echarts";
} }