Skip to content

Commit 9846b73

Browse files
Abdullah KhanAbdullah Khan
authored andcommitted
Revert "feat(trace-tree-node): Iterating"
This reverts commit 64799a5.
1 parent 64799a5 commit 9846b73

File tree

1 file changed

+25
-13
lines changed
  • static/app/views/performance/newTraceDetails/traceApi

1 file changed

+25
-13
lines changed

static/app/views/performance/newTraceDetails/traceApi/utils.tsx

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ export const getRepresentativeTraceEvent = (
5656
return {type: 'uptime_check', event: traceChild.value};
5757
}
5858

59-
let rootEvent: TraceTree.TraceEvent | null = null;
59+
let preferredRootEvent: TraceTree.TraceEvent | null = null;
60+
let firstRootEvent: TraceTree.TraceEvent | null = null;
6061
let candidateEvent: TraceTree.TraceEvent | null = null;
6162
let firstEvent: TraceTree.TraceEvent | null = null;
6263

@@ -66,26 +67,22 @@ export const getRepresentativeTraceEvent = (
6667
: [...traceNode.value.transactions, ...traceNode.value.orphan_errors];
6768
for (const event of events) {
6869
if (isRootEvent(event)) {
69-
rootEvent = event;
70+
if (!firstRootEvent) {
71+
firstRootEvent = event;
72+
}
7073

71-
if (!isEAP) {
72-
// For non-EAP traces, we return the first root event.
74+
if (hasPreferredOp(event)) {
75+
preferredRootEvent = event;
7376
break;
7477
}
75-
78+
// Otherwise we keep looking for a root eap transaction. If we don't find one, we use other roots, like standalone spans.
7679
continue;
7780
} else if (
7881
// If we haven't found a root transaction, but we found a candidate transaction
7982
// with an op that we care about, we can use it for the title. We keep looking for
8083
// a root.
8184
!candidateEvent &&
82-
CANDIDATE_TRACE_TITLE_OPS.includes(
83-
'transaction.op' in event
84-
? event['transaction.op']
85-
: 'op' in event
86-
? event.op
87-
: ''
88-
)
85+
hasPreferredOp(event)
8986
) {
9087
candidateEvent = event;
9188
continue;
@@ -97,7 +94,7 @@ export const getRepresentativeTraceEvent = (
9794
}
9895

9996
return {
100-
event: rootEvent ?? candidateEvent ?? firstEvent,
97+
event: preferredRootEvent ?? firstRootEvent ?? candidateEvent ?? firstEvent,
10198
type: 'span',
10299
};
103100
};
@@ -113,3 +110,18 @@ export const isValidEventUUID = (id: string): boolean => {
113110
/^[0-9a-f]{8}[0-9a-f]{4}[1-5][0-9a-f]{3}[89ab][0-9a-f]{3}[0-9a-f]{12}$/i;
114111
return uuidRegex.test(id);
115112
};
113+
114+
/**
115+
* Prefer "special" root events over generic root events when generating a title
116+
* for the waterfall view. Picking these improves contextual navigation for linked
117+
* traces, resulting in more meaningful waterfall titles.
118+
*/
119+
function hasPreferredOp(event: TraceTree.TraceEvent): boolean {
120+
const op =
121+
'op' in event
122+
? event.op
123+
: 'transaction.op' in event
124+
? event['transaction.op']
125+
: undefined;
126+
return !!op && CANDIDATE_TRACE_TITLE_OPS.includes(op);
127+
}

0 commit comments

Comments
 (0)