@@ -32,24 +32,28 @@ export const tracing = fastifyPlugin(
32
32
fastify . register ( traceServerTime )
33
33
34
34
fastify . addHook ( 'onRequest' , async ( request ) => {
35
- if ( isMultitenant && request . tenantId ) {
36
- const tenantConfig = await getTenantConfig ( request . tenantId )
37
- request . tracingMode = tenantConfig . tracingMode
38
- } else {
39
- request . tracingMode = defaultTracingMode
40
- }
35
+ try {
36
+ if ( isMultitenant && request . tenantId ) {
37
+ const tenantConfig = await getTenantConfig ( request . tenantId )
38
+ request . tracingMode = tenantConfig . tracingMode
39
+ } else {
40
+ request . tracingMode = defaultTracingMode
41
+ }
41
42
42
- const span = trace . getSpan ( context . active ( ) )
43
+ const span = trace . getSpan ( context . active ( ) )
43
44
44
- if ( span ) {
45
- // We collect logs only in full,logs,debug mode
46
- if (
47
- tracingEnabled &&
48
- request . tracingMode &&
49
- ! [ 'full' , 'logs' , 'debug' ] . includes ( request . tracingMode )
50
- ) {
51
- traceCollector . clearTrace ( span . spanContext ( ) . traceId )
45
+ if ( span ) {
46
+ // We collect logs only in full,logs,debug mode
47
+ if (
48
+ tracingEnabled &&
49
+ request . tracingMode &&
50
+ ! [ 'full' , 'logs' , 'debug' ] . includes ( request . tracingMode )
51
+ ) {
52
+ traceCollector . clearTrace ( span . spanContext ( ) . traceId )
53
+ }
52
54
}
55
+ } catch ( e ) {
56
+ logSchema . error ( request . log , 'failed setting tracing mode' , { error : e , type : 'tracing' } )
53
57
}
54
58
} )
55
59
} ,
@@ -62,12 +66,12 @@ export const traceServerTime = fastifyPlugin(
62
66
return
63
67
}
64
68
fastify . addHook ( 'onResponse' , async ( request , reply ) => {
65
- const traceId = trace . getSpan ( context . active ( ) ) ?. spanContext ( ) . traceId
69
+ try {
70
+ const traceId = trace . getSpan ( context . active ( ) ) ?. spanContext ( ) . traceId
66
71
67
- if ( traceId ) {
68
- const spans = traceCollector . getSpansForTrace ( traceId )
69
- if ( spans ) {
70
- try {
72
+ if ( traceId ) {
73
+ const spans = traceCollector . getSpansForTrace ( traceId )
74
+ if ( spans ) {
71
75
const serverTimingHeaders = spansToServerTimings ( spans , reply . statusCode >= 500 )
72
76
73
77
request . serverTimings = serverTimingHeaders
@@ -84,27 +88,30 @@ export const traceServerTime = fastifyPlugin(
84
88
. join ( ',' )
85
89
reply . header ( 'Server-Timing' , httpServerTimes )
86
90
}
87
- } catch ( e ) {
88
- logSchema . error ( logger , 'failed parsing server times' , { error : e , type : 'otel' } )
91
+ traceCollector . clearTrace ( traceId )
89
92
}
90
-
91
- traceCollector . clearTrace ( traceId )
92
93
}
94
+ } catch ( e ) {
95
+ logSchema . error ( request . log , 'failed tracing on response' , { error : e , type : 'tracing' } )
93
96
}
94
97
} )
95
98
96
99
fastify . addHook ( 'onRequestAbort' , async ( req ) => {
97
- const span = trace . getSpan ( context . active ( ) )
98
- const traceId = span ?. spanContext ( ) . traceId
100
+ try {
101
+ const span = trace . getSpan ( context . active ( ) )
102
+ const traceId = span ?. spanContext ( ) . traceId
99
103
100
- span ?. setAttribute ( 'req_aborted' , true )
104
+ span ?. setAttribute ( 'req_aborted' , true )
101
105
102
- if ( traceId ) {
103
- const spans = traceCollector . getSpansForTrace ( traceId )
104
- if ( spans ) {
105
- req . serverTimings = spansToServerTimings ( spans , true )
106
+ if ( traceId ) {
107
+ const spans = traceCollector . getSpansForTrace ( traceId )
108
+ if ( spans ) {
109
+ req . serverTimings = spansToServerTimings ( spans , true )
110
+ }
111
+ traceCollector . clearTrace ( traceId )
106
112
}
107
- traceCollector . clearTrace ( traceId )
113
+ } catch ( e ) {
114
+ logSchema . error ( logger , 'failed parsing server times on abort' , { error : e , type : 'otel' } )
108
115
}
109
116
} )
110
117
} ,
0 commit comments