Skip to content

Commit 03532d7

Browse files
Use Math.max and Math.min
Signed-off-by: Damian Maslanka <[email protected]>
1 parent 5935bd1 commit 03532d7

File tree

1 file changed

+12
-20
lines changed

1 file changed

+12
-20
lines changed

packages/jaeger-ui/src/components/TracePage/TraceStatistics/tableValues.tsx

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -60,40 +60,32 @@ function computeSelfTime(parentSpan: Span, allSpans: Span[]): number {
6060
const childEndsBeforePreviousChild = childEndTime < previousChildEndTime;
6161

6262
// parent |..................|
63-
// child |.......|
63+
// child |.......| - previousChild
6464
// child |.....| - childEndsBeforePreviousChild is true, skipped
6565
// child |......| - childStartsAfterParentEnded is true, skipped
6666
if (childStartsAfterParentEnded || childEndsBeforePreviousChild) {
6767
continue;
6868
}
6969

70-
let nonOverlappingStartTime = child.startTime;
71-
let nonOverlappingDuration = child.duration;
72-
const childStartsBeforePreviousChildEnds = child.startTime < previousChildEndTime;
73-
7470
// parent |.....................|
75-
// child |.......|
76-
// child |.....| - childStartsBeforePreviousChildEnds is true
77-
// child |.....| - childStartsBeforePreviousChildEnds is false
78-
if (childStartsBeforePreviousChildEnds) {
79-
const diff = previousChildEndTime - child.startTime;
80-
nonOverlappingDuration = child.duration - diff;
81-
nonOverlappingStartTime = previousChildEndTime;
82-
}
71+
// child |.......| - previousChild
72+
// child |.....| - nonOverlappingStartTime is previousChildEndTime
73+
// child |.....| - nonOverlappingStartTime is child.startTime
74+
const nonOverlappingStartTime = Math.max(previousChildEndTime, child.startTime);
75+
const childEndTimeOrParentEndTime = Math.min(parentSpanEndTime, childEndTime);
76+
77+
const nonOverlappingDuration = childEndTimeOrParentEndTime - nonOverlappingStartTime;
78+
parentSpanSelfTime -= nonOverlappingDuration;
79+
8380
// last span which can be included in self time calculation, because it ends after parent span ends
8481
// parent |......................|
8582
// child |.....| - last span included in self time calculation
8683
// child |.........| - skipped
87-
else if (childEndTime > parentSpanEndTime) {
88-
const diff = childEndTime - parentSpanEndTime;
89-
90-
nonOverlappingDuration = child.duration - diff;
91-
parentSpanSelfTime -= nonOverlappingDuration;
84+
if (childEndTimeOrParentEndTime === parentSpanEndTime) {
9285
break;
9386
}
9487

95-
parentSpanSelfTime -= nonOverlappingDuration;
96-
previousChildEndTime = nonOverlappingStartTime + nonOverlappingDuration;
88+
previousChildEndTime = childEndTime;
9789
}
9890

9991
return parentSpanSelfTime;

0 commit comments

Comments
 (0)