@@ -60,16 +60,23 @@ function wrapResponseRender (render) {
60
60
addHook ( { name : 'express' , versions : [ '>=4' ] } , express => {
61
61
shimmer . wrap ( express . application , 'handle' , wrapHandle )
62
62
63
- shimmer . wrap ( express . Router , 'use' , wrapRouterMethod )
64
- shimmer . wrap ( express . Router , 'route' , wrapRouterMethod )
65
-
66
63
shimmer . wrap ( express . response , 'json' , wrapResponseJson )
67
64
shimmer . wrap ( express . response , 'jsonp' , wrapResponseJson )
68
65
shimmer . wrap ( express . response , 'render' , wrapResponseRender )
69
66
70
67
return express
71
68
} )
72
69
70
+ // Express 5 does not rely on router in the same way as v4 and should not be instrumented anymore.
71
+ // It would otherwise produce spans for router and express, and so duplicating them.
72
+ // We now fall back to router instrumentation
73
+ addHook ( { name : 'express' , versions : [ '4' ] } , express => {
74
+ shimmer . wrap ( express . Router , 'use' , wrapRouterMethod )
75
+ shimmer . wrap ( express . Router , 'route' , wrapRouterMethod )
76
+
77
+ return express
78
+ } )
79
+
73
80
const queryParserReadCh = channel ( 'datadog:query:read:finish' )
74
81
75
82
function publishQueryParsedAndNext ( req , res , next ) {
0 commit comments