Skip to content

Commit 2273878

Browse files
niieanibbrzoska
authored andcommitted
fix: various improvements to debugger
1 parent d0cee54 commit 2273878

8 files changed

+52
-18
lines changed

src/main.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export * from './v3/recordingComputeUtils'
5858
export type * from './v3/spanAnnotationTypes'
5959
export type * from './v3/spanTypes'
6060
export * from './v3/TraceManager'
61-
export * from './v3/TraceManagerDebugger'
61+
export * from './v3/TraceManagerDebuggerLazy'
6262
export type * from './v3/traceRecordingTypes'
6363
export type * from './v3/types'
6464
export type * from './v3/typeUtils'

src/stories/mockComponentsv3/App.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useEffect } from 'react'
22
import type { Meta, StoryObj } from '@storybook/react'
33
import { createConsoleTraceLogger } from '../../v3/ConsoleTraceLogger'
4-
import { TraceManagerDebugger } from '../../v3/TraceManagerDebugger'
4+
import TraceManagerDebugger from '../../v3/TraceManagerDebugger'
55
import { App } from './App'
66
import { traceManager } from './traceManager'
77

src/v3/Trace.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,13 @@ export class TraceStateMachine<
593593
doesSpanMatch(idleRegressionCheckSpan, this.#context) &&
594594
doesSpanMatch.idleCheck
595595
) {
596+
// Sometimes spans are processed out of order, we update the lastRelevant if this span ends later
597+
if (
598+
spanAndAnnotation.annotation.operationRelativeEndTime >
599+
(this.lastRelevant?.annotation.operationRelativeEndTime ?? 0)
600+
) {
601+
this.lastRelevant = spanAndAnnotation
602+
}
596603
// check if we regressed on "isIdle", and if so, transition to interrupted with reason
597604
return {
598605
transitionToState: 'interrupted',
@@ -1252,12 +1259,10 @@ export class Trace<
12521259
}
12531260

12541261
this.recordedItemsByLabel = Object.fromEntries(
1255-
Object.entries(this.definition.labelMatching ?? {}).map(
1256-
([label, matcher]) => [
1257-
label,
1258-
[] as SpanAndAnnotation<RelationSchemasT>[],
1259-
],
1260-
),
1262+
Object.keys(this.definition.labelMatching ?? {}).map((label) => [
1263+
label,
1264+
[] as SpanAndAnnotation<RelationSchemasT>[],
1265+
]),
12611266
)
12621267

12631268
// definition is now set, we can initialize the state machine

src/v3/TraceManager.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ describe('TraceManager', () => {
570570
// prettier-ignore
571571
const { spans } = getSpansFromTimeline<TicketIdRelationSchemasFixture>`
572572
Events: ${Render('start', 0)}-----${Render('component', 50, {isIdle: true})}-----${Render('component', 50, {isIdle: false})}
573-
Time: ${0} ${100} ${200}
573+
Time: ${0} ${100} ${200}
574574
`
575575

576576
processSpans(spans, traceManager)

src/v3/TraceManagerDebugger.tsx

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -752,8 +752,6 @@ function DefinitionChip({
752752
)
753753
}
754754

755-
// No longer needed - will directly use definition property
756-
757755
// RequiredSpansList component to display required spans
758756
// eslint-disable-next-line @typescript-eslint/no-unused-vars
759757
function RequiredSpansList<RelationSchemasT>({
@@ -903,7 +901,7 @@ function TraceItem<
903901
onClick={handleDownloadClick}
904902
title="Download trace recording as JSON"
905903
>
906-
<span style={styles.downloadIcon}></span>
904+
<span style={styles.downloadIcon}>🔽 JSON</span>
907905
</button>
908906
)}
909907
{/* Error indicator */}
@@ -1108,20 +1106,25 @@ function TraceItem<
11081106
)
11091107
}
11101108

1109+
export interface TraceManagerDebuggerProps<
1110+
RelationSchemasT extends RelationSchemasBase<RelationSchemasT>,
1111+
> {
1112+
traceManager: TraceManager<RelationSchemasT>
1113+
float?: boolean
1114+
traceHistoryLimit?: number
1115+
}
1116+
11111117
/**
11121118
* A component that visualizes the current state of the TraceManager and its Traces
11131119
*/
1114-
export function TraceManagerDebugger<
1120+
// eslint-disable-next-line import/no-default-export
1121+
export default function TraceManagerDebugger<
11151122
RelationSchemasT extends RelationSchemasBase<RelationSchemasT>,
11161123
>({
11171124
traceManager,
11181125
float = false,
11191126
traceHistoryLimit = TRACE_HISTORY_LIMIT,
1120-
}: {
1121-
traceManager: TraceManager<RelationSchemasT>
1122-
float?: boolean
1123-
traceHistoryLimit?: number
1124-
}) {
1127+
}: TraceManagerDebuggerProps<RelationSchemasT>) {
11251128
const [currentTrace, setCurrentTrace] =
11261129
useState<TraceInfo<RelationSchemasT> | null>(null)
11271130
const [traceHistory, setTraceHistory] = useState<

src/v3/TraceManagerDebuggerLazy.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import React from 'react'
2+
3+
export const TraceManagerDebuggerLazy = React.lazy(
4+
() => import('./TraceManagerDebugger'),
5+
)

src/v3/convertToRum.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ describe('convertTraceToRUM', () => {
7272
transitionFromState: 'active',
7373
lastRelevantSpanAndAnnotation: undefined,
7474
transitionToState: 'complete',
75+
completeSpanAndAnnotation: undefined,
76+
cpuIdleSpanAndAnnotation: undefined,
77+
lastRequiredSpanAndAnnotation: undefined,
7578
},
7679
)
7780

@@ -165,6 +168,9 @@ describe('convertTraceToRUM', () => {
165168
transitionFromState: 'active',
166169
lastRelevantSpanAndAnnotation: undefined,
167170
transitionToState: 'complete',
171+
completeSpanAndAnnotation: undefined,
172+
cpuIdleSpanAndAnnotation: undefined,
173+
lastRequiredSpanAndAnnotation: undefined,
168174
},
169175
)
170176

src/v3/recordingComputeUtils.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ describe('recordingComputeUtils', () => {
6363
transitionFromState: 'active',
6464
lastRelevantSpanAndAnnotation: undefined,
6565
transitionToState: 'complete',
66+
completeSpanAndAnnotation: undefined,
67+
cpuIdleSpanAndAnnotation: undefined,
68+
lastRequiredSpanAndAnnotation: undefined,
6669
},
6770
)
6871

@@ -100,6 +103,9 @@ describe('recordingComputeUtils', () => {
100103
transitionFromState: 'active',
101104
lastRelevantSpanAndAnnotation: undefined,
102105
transitionToState: 'complete',
106+
completeSpanAndAnnotation: undefined,
107+
cpuIdleSpanAndAnnotation: undefined,
108+
lastRequiredSpanAndAnnotation: undefined,
103109
},
104110
)
105111

@@ -139,6 +145,9 @@ describe('recordingComputeUtils', () => {
139145
transitionFromState: 'active',
140146
lastRelevantSpanAndAnnotation: undefined,
141147
transitionToState: 'complete',
148+
completeSpanAndAnnotation: undefined,
149+
cpuIdleSpanAndAnnotation: undefined,
150+
lastRequiredSpanAndAnnotation: undefined,
142151
},
143152
)
144153

@@ -693,6 +702,9 @@ describe('recordingComputeUtils', () => {
693702
transitionFromState: 'active',
694703
transitionToState: 'complete',
695704
lastRelevantSpanAndAnnotation: undefined,
705+
completeSpanAndAnnotation: undefined,
706+
cpuIdleSpanAndAnnotation: undefined,
707+
lastRequiredSpanAndAnnotation: undefined,
696708
},
697709
)
698710

@@ -730,6 +742,9 @@ describe('recordingComputeUtils', () => {
730742
transitionFromState: 'active',
731743
transitionToState: 'complete',
732744
lastRelevantSpanAndAnnotation: undefined,
745+
completeSpanAndAnnotation: undefined,
746+
cpuIdleSpanAndAnnotation: undefined,
747+
lastRequiredSpanAndAnnotation: undefined,
733748
},
734749
)
735750

0 commit comments

Comments
 (0)