Skip to content

Commit 178c45e

Browse files
committed
fixup! feat(http): portable node:http client instrumentation (#20393)
1 parent 6cf3536 commit 178c45e

2 files changed

Lines changed: 11 additions & 9 deletions

File tree

packages/core/src/integrations/http/client-subscriptions.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ export function getHttpClientSubscriptions(options: HttpInstrumentationOptions):
7272
};
7373
request.on(errorMonitor, onRequestError);
7474
request.prependListener('response', response => {
75-
// no longer need this, got a response.
76-
request.removeListener(errorMonitor, onRequestError);
7775
if (request.listenerCount('response') <= 1) {
7876
response.resume();
7977
}
@@ -125,7 +123,8 @@ export function getHttpClientSubscriptions(options: HttpInstrumentationOptions):
125123
});
126124

127125
request.prependListener('response', response => {
128-
// no longer need this, listen on response now
126+
// no longer need this, listen on response now.
127+
// do not end the span until the response finishes
129128
request.removeListener('close', requestOnClose);
130129
if (request.listenerCount('response') <= 1) {
131130
response.resume();

packages/node-core/src/light/integrations/httpIntegration.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,15 @@ const _httpIntegration = ((options: HttpIntegrationOptions = {}) => {
128128
// time. The http.client.request.error channel is only available on
129129
// the same node versions as client.request.created, so no help.
130130
if (_options.breadcrumbs && !FULLY_SUPPORTS_HTTP_DIAGNOSTICS_CHANNEL) {
131-
subscribe('http.client.response.finish', (data: unknown) => {
132-
const { request, response } = data as {
133-
request: HttpClientRequest;
134-
response: HttpIncomingMessage;
135-
};
136-
onOutgoingResponseFinish(request, response, _options);
131+
subscribe('http.client.response.start', (data: unknown) => {
132+
const { request } = data as { request: HttpClientRequest };
133+
request.on(errorMonitor, () => onOutgoingResponseFinish(request, undefined, _options));
134+
request.prependListener('response', response => {
135+
if (request.listenerCount('response') <= 1) {
136+
response.resume();
137+
}
138+
onOutgoingResponseFinish(request, response, _options);
139+
});
137140
});
138141
}
139142
},

0 commit comments

Comments
 (0)