Skip to content

Commit 18c3669

Browse files
committed
separating v4 router instrumentation to its own addhook
1 parent e0a5c37 commit 18c3669

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

packages/datadog-instrumentations/src/express.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,23 @@ function wrapResponseRender (render) {
6060
addHook({ name: 'express', versions: ['>=4'] }, express => {
6161
shimmer.wrap(express.application, 'handle', wrapHandle)
6262

63-
shimmer.wrap(express.Router, 'use', wrapRouterMethod)
64-
shimmer.wrap(express.Router, 'route', wrapRouterMethod)
65-
6663
shimmer.wrap(express.response, 'json', wrapResponseJson)
6764
shimmer.wrap(express.response, 'jsonp', wrapResponseJson)
6865
shimmer.wrap(express.response, 'render', wrapResponseRender)
6966

7067
return express
7168
})
7269

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+
7380
const queryParserReadCh = channel('datadog:query:read:finish')
7481

7582
function publishQueryParsedAndNext (req, res, next) {

0 commit comments

Comments
 (0)