@@ -32,24 +32,28 @@ export const tracing = fastifyPlugin(
3232 fastify . register ( traceServerTime )
3333
3434 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+ }
4142
42- const span = trace . getSpan ( context . active ( ) )
43+ const span = trace . getSpan ( context . active ( ) )
4344
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+ }
5254 }
55+ } catch ( e ) {
56+ logSchema . error ( request . log , 'failed setting tracing mode' , { error : e , type : 'tracing' } )
5357 }
5458 } )
5559 } ,
@@ -62,12 +66,12 @@ export const traceServerTime = fastifyPlugin(
6266 return
6367 }
6468 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
6671
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 ) {
7175 const serverTimingHeaders = spansToServerTimings ( spans , reply . statusCode >= 500 )
7276
7377 request . serverTimings = serverTimingHeaders
@@ -84,27 +88,30 @@ export const traceServerTime = fastifyPlugin(
8488 . join ( ',' )
8589 reply . header ( 'Server-Timing' , httpServerTimes )
8690 }
87- } catch ( e ) {
88- logSchema . error ( logger , 'failed parsing server times' , { error : e , type : 'otel' } )
91+ traceCollector . clearTrace ( traceId )
8992 }
90-
91- traceCollector . clearTrace ( traceId )
9293 }
94+ } catch ( e ) {
95+ logSchema . error ( request . log , 'failed tracing on response' , { error : e , type : 'tracing' } )
9396 }
9497 } )
9598
9699 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
99103
100- span ?. setAttribute ( 'req_aborted' , true )
104+ span ?. setAttribute ( 'req_aborted' , true )
101105
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 )
106112 }
107- traceCollector . clearTrace ( traceId )
113+ } catch ( e ) {
114+ logSchema . error ( logger , 'failed parsing server times on abort' , { error : e , type : 'otel' } )
108115 }
109116 } )
110117 } ,
0 commit comments