diff options
author | Erlend <erlendniko@hotmail.com> | 2022-08-09 15:05:02 +0200 |
---|---|---|
committer | Erlend <erlendniko@hotmail.com> | 2022-08-09 15:05:02 +0200 |
commit | cefdf180c86dada383cf178bdb299e6ee407297a (patch) | |
tree | c147f9fdfe82395003923f8e77235bbb43bc57a1 | |
parent | 96580542d05d7509f3931a699bec57366c5f6d47 (diff) |
fixed not every trace point getting added
-rw-r--r-- | client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx | 62 |
1 files changed, 37 insertions, 25 deletions
diff --git a/client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx b/client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx index 0a647593400..53d132a2ff0 100644 --- a/client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx +++ b/client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx @@ -16,21 +16,19 @@ export default function transform(trace) { processes = output['data'][0]['processes']; processes.p0 = { serviceName: 'Query', tags: [] }; let temp = trace['trace']['children']; - let spans = digDownInSpan(temp); + let spans = digDownInTrace(temp); traceStartTimestamp = findTraceStartTime(spans); - let topSpanFirstHalf = createNewSpan(traceStartTimestamp); - data.push(topSpanFirstHalf); + let firstSpan = createNewSpan(traceStartTimestamp); + data.push(firstSpan); - traverseSpans(spans, topSpanFirstHalf); + traverseSpans(spans, firstSpan); return output; } function traverseChildren(span, parent) { let data = output['data'][0]['spans']; let logSpan; - let spanTimestamp = span['timestamp']; if (span.hasOwnProperty('children')) { - // Create a new parent span so that the timeline for the logs are correct let duration = (span['children'][span['children'].length - 1]['timestamp'] - span['children'][0]['timestamp']) * @@ -39,11 +37,12 @@ function traverseChildren(span, parent) { duration = 1; } parent['duration'] = duration; - for (let i = 0; i < span['children'].length - 1; i++) { + for (let i = 0; i < span['children'].length; i++) { let x = span['children'][i]; if (x.hasOwnProperty('children')) { + // Create a new parent span so that the timeline for the spans are correct logSpan = createNewSpan( - traceStartTimestamp + spanTimestamp, + traceStartTimestamp + x['timestamp'] * 1000, duration, 'p0', parent['operationName'], @@ -58,8 +57,12 @@ function traverseChildren(span, parent) { if (x.hasOwnProperty('timestamp')) { let logPointStart = traceStartTimestamp + x['timestamp'] * 1000; let logPointDuration; - logPointDuration = - (span['children'][i + 1]['timestamp'] - x['timestamp']) * 1000; + if (i >= span['children'].length - 1) { + logPointDuration = 1; + } else { + logPointDuration = + findDuration(span['children'], i) - x['timestamp'] * 1000; + } if (isNaN(logPointDuration) || logPointDuration === 0) { logPointDuration = 1; } @@ -83,10 +86,10 @@ function traverseChildren(span, parent) { } } -function traverseSpans(spans, topSpanFirstHalf) { +function traverseSpans(spans, firstSpan) { let data = output['data'][0]['spans']; - let totalDuration = findDuration(spans); - topSpanFirstHalf['duration'] = totalDuration; + let totalDuration = findTotalDuration(spans); + firstSpan['duration'] = totalDuration; for (let i = 0; i < spans.length; i++) { if (spans[i].hasOwnProperty('children')) { traverseChildren(spans[i], data[data.length - 1]); @@ -98,7 +101,7 @@ function traverseSpans(spans, topSpanFirstHalf) { { refType: 'CHILD_OF', traceID: traceID, - spanID: topSpanFirstHalf['spanID'], + spanID: firstSpan['spanID'], }, ]); data.push(span); @@ -107,10 +110,9 @@ function traverseSpans(spans, topSpanFirstHalf) { if (i >= spans.length - 1) { duration = 1; } else { - duration = (spans[i + 1]['timestamp'] - spans[i]['timestamp']) * 1000; - duration = duration === 0 ? 1 : duration; + duration = findDuration(spans, i) - spans[i]['timestamp'] * 1000; } - if (isNaN(duration)) { + if (isNaN(duration) || duration === 0) { duration = 1; } span['duration'] = duration; @@ -218,7 +220,7 @@ function createChildren(children, parentID) { } } -function digDownInSpan(traces) { +function digDownInTrace(traces) { for (let trace of traces) { if (trace.hasOwnProperty('children')) { return trace['children']; @@ -252,18 +254,28 @@ function findTraceStartTime(spans) { return startTime; } -function findDuration(spans) { - let notFound = true; - let duration = 0; +// Finds the total duration of the entire trace +function findTotalDuration(spans) { let i = spans.length - 1; - while (notFound && i >= 0) { + while (i >= 0) { if (spans[i].hasOwnProperty('timestamp')) { - duration = spans[i]['timestamp']; - notFound = false; + return spans[i]['timestamp'] * 1000; } i--; } - return duration * 1000; + return 0; +} + +// Finds the duration of a single span +function findDuration(span, i) { + i = i + 1; + while (i < span.length) { + if (span[i].hasOwnProperty('timestamp')) { + return span[i]['timestamp'] * 1000; + } + i++; + } + return 0; } function createNewSpan( |