@@ -11,33 +11,28 @@ class EventPlugin extends TracingPlugin {
11
11
super ( )
12
12
this . eventHandler = eventHandler
13
13
this . eventFilter = eventFilter
14
- this . contextData = new WeakMap ( )
15
14
this . entryType = this . constructor . entryType
15
+ this . dataSymbol = Symbol ( `dd-trace.profiling.event.${ this . entryType } .${ this . constructor . operation } ` )
16
16
}
17
17
18
18
start ( ctx ) {
19
- this . contextData . set ( ctx , {
20
- startEvent : ctx ,
21
- startTime : performance . now ( )
22
- } )
19
+ ctx [ this . dataSymbol ] = performance . now ( )
23
20
}
24
21
25
22
error ( ctx ) {
26
- const data = this . contextData . get ( ctx )
27
- if ( data ) {
28
- data . error = true
29
- }
23
+ // We don't emit perf events for failed operations
24
+ ctx [ this . dataSymbol ] = undefined
30
25
}
31
26
32
27
finish ( ctx ) {
33
- const data = this . contextData . get ( ctx )
34
-
35
- if ( ! data ) return
36
- this . contextData . delete ( ctx )
28
+ const startTime = ctx [ this . dataSymbol ]
29
+ if ( startTime === undefined ) {
30
+ return
31
+ }
32
+ ctx [ this . dataSymbol ] = undefined
37
33
38
- const { startEvent, startTime, error } = data
39
- if ( error || this . ignoreEvent ( startEvent ) ) {
40
- return // don't emit perf events for failed operations or ignored events
34
+ if ( this . ignoreEvent ( ctx ) ) {
35
+ return // don't emit perf events for ignored events
41
36
}
42
37
43
38
const duration = performance . now ( ) - startTime
@@ -55,7 +50,7 @@ class EventPlugin extends TracingPlugin {
55
50
event . _ddSpanId = context ?. toSpanId ( )
56
51
event . _ddRootSpanId = context ?. _trace . started [ 0 ] ?. context ( ) . toSpanId ( ) || event . _ddSpanId
57
52
58
- this . eventHandler ( this . extendEvent ( event , startEvent ) )
53
+ this . eventHandler ( this . extendEvent ( event , ctx ) )
59
54
}
60
55
61
56
ignoreEvent ( ) {
0 commit comments