Skip to content

Commit ae925f6

Browse files
committed
ensure we keep refs to the channels
1 parent e3cadc6 commit ae925f6

File tree

2 files changed

+243
-172
lines changed

2 files changed

+243
-172
lines changed

packages/datadog-plugin-undici/src/index.js

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,30 +53,37 @@ function parseHeaders (headers) {
5353
})
5454
return object
5555
}
56+
const channels = {
57+
requestChannel: undefined,
58+
headersChannel: undefined,
59+
errorChannel: undefined
60+
}
5661

5762
function diagnostics (tracer, config) {
5863
let diagnosticsChannel
5964
try {
6065
diagnosticsChannel = require('diagnostics_channel')
6166
} catch (e) {
62-
log.error("Unable to configure undici, cannot require 'diagnostics_channel'")
67+
log.error(
68+
"Unable to configure undici, cannot require 'diagnostics_channel'"
69+
)
6370
return () => {}
6471
}
6572
config = normalizeConfig(tracer, config)
6673

67-
const requestChannel = diagnosticsChannel.channel('undici:request:create')
68-
const headersChannel = diagnosticsChannel.channel('undici:request:headers')
69-
const requestErrorChannel = diagnosticsChannel.channel(
70-
'undici:request:error'
74+
channels.requestChannel = diagnosticsChannel.channel('undici:request:create')
75+
channels.headersChannel = diagnosticsChannel.channel(
76+
'undici:request:headers'
7177
)
78+
channels.errorChannel = diagnosticsChannel.channel('undici:request:error')
79+
80+
channels.requestChannel.subscribe(handleRequestCreate)
81+
channels.errorChannel.subscribe(handleRequestError)
82+
channels.headersChannel.subscribe(handleRequestHeaders)
7283

7384
// We use a weakmap here to store the request / spans
7485
const requestSpansMap = new WeakMap()
7586

76-
requestChannel.subscribe(handleRequestCreate)
77-
requestErrorChannel.subscribe(handleRequestError)
78-
headersChannel.subscribe(handleRequestHeaders)
79-
8087
function handleRequestCreate ({ request }) {
8188
const method = (request.method || 'GET').toUpperCase()
8289

@@ -123,14 +130,14 @@ function diagnostics (tracer, config) {
123130
}
124131

125132
return function unsubscribe () {
126-
if (requestChannel.hasSubscribers) {
127-
requestChannel.unsubscribe(handleRequestCreate)
133+
if (channels.requestChannel.hasSubscribers) {
134+
channels.requestChannel.unsubscribe(handleRequestCreate)
128135
}
129-
if (headersChannel.hasSubscribers) {
130-
headersChannel.unsubscribe(handleRequestHeaders)
136+
if (channels.headersChannel.hasSubscribers) {
137+
channels.headersChannel.unsubscribe(handleRequestHeaders)
131138
}
132-
if (requestErrorChannel.hasSubscribers) {
133-
requestErrorChannel.unsubscribe(handleRequestError)
139+
if (channels.requestErrorChannel.hasSubscribers) {
140+
channels.errorChannel.unsubscribe(handleRequestError)
134141
}
135142
}
136143
}

0 commit comments

Comments
 (0)