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