@opentelemetry/instrumentation-http
Advanced tools
Comparing version 0.38.0 to 0.39.0
@@ -194,2 +194,6 @@ "use strict"; | ||
} | ||
/** | ||
* Determines if the request has errored or the response has ended/errored. | ||
*/ | ||
let responseFinished = false; | ||
/* | ||
@@ -201,2 +205,3 @@ * User 'response' event listeners can be added before our listener, | ||
request.prependListener('response', (response) => { | ||
this._diag.debug('outgoingRequest on response()'); | ||
const responseAttributes = utils.getOutgoingRequestAttributesOnResponse(response); | ||
@@ -211,5 +216,8 @@ span.setAttributes(responseAttributes); | ||
api_1.context.bind(api_1.context.active(), response); | ||
this._diag.debug('outgoingRequest on response()'); | ||
response.on('end', () => { | ||
const endHandler = () => { | ||
this._diag.debug('outgoingRequest on end()'); | ||
if (responseFinished) { | ||
return; | ||
} | ||
responseFinished = true; | ||
let status; | ||
@@ -229,8 +237,19 @@ if (response.aborted && !response.complete) { | ||
this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, metricAttributes); | ||
}); | ||
}; | ||
response.on('end', endHandler); | ||
// See https://github.com/open-telemetry/opentelemetry-js/pull/3625#issuecomment-1475673533 | ||
if (semver.lt(process.version, '16.0.0')) { | ||
response.on('close', endHandler); | ||
} | ||
response.on(events_1.errorMonitor, (error) => { | ||
this._diag.debug('outgoingRequest on error()', error); | ||
if (responseFinished) { | ||
return; | ||
} | ||
responseFinished = true; | ||
utils.setSpanWithError(span, error); | ||
const code = utils.parseResponseStatus(api_1.SpanKind.CLIENT, response.statusCode); | ||
span.setStatus({ code, message: error.message }); | ||
span.setStatus({ | ||
code: api_1.SpanStatusCode.ERROR, | ||
message: error.message, | ||
}); | ||
this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, metricAttributes); | ||
@@ -241,8 +260,14 @@ }); | ||
this._diag.debug('outgoingRequest on request close()'); | ||
if (!request.aborted) { | ||
this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, metricAttributes); | ||
if (request.aborted || responseFinished) { | ||
return; | ||
} | ||
responseFinished = true; | ||
this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, metricAttributes); | ||
}); | ||
request.on(events_1.errorMonitor, (error) => { | ||
this._diag.debug('outgoingRequest on request error()', error); | ||
if (responseFinished) { | ||
return; | ||
} | ||
responseFinished = true; | ||
utils.setSpanWithError(span, error); | ||
@@ -249,0 +274,0 @@ this._closeHttpSpan(span, api_1.SpanKind.CLIENT, startTime, metricAttributes); |
@@ -1,2 +0,2 @@ | ||
export declare const VERSION = "0.38.0"; | ||
export declare const VERSION = "0.39.0"; | ||
//# sourceMappingURL=version.d.ts.map |
@@ -20,3 +20,3 @@ "use strict"; | ||
// this is autogenerated file, see scripts/version-update.js | ||
exports.VERSION = '0.38.0'; | ||
exports.VERSION = '0.39.0'; | ||
//# sourceMappingURL=version.js.map |
{ | ||
"name": "@opentelemetry/instrumentation-http", | ||
"version": "0.38.0", | ||
"version": "0.39.0", | ||
"description": "OpenTelemetry http/https automatic instrumentation package.", | ||
@@ -49,6 +49,6 @@ "main": "build/src/index.js", | ||
"@opentelemetry/api": "1.4.1", | ||
"@opentelemetry/context-async-hooks": "1.12.0", | ||
"@opentelemetry/sdk-metrics": "1.12.0", | ||
"@opentelemetry/sdk-trace-base": "1.12.0", | ||
"@opentelemetry/sdk-trace-node": "1.12.0", | ||
"@opentelemetry/context-async-hooks": "1.13.0", | ||
"@opentelemetry/sdk-metrics": "1.13.0", | ||
"@opentelemetry/sdk-trace-base": "1.13.0", | ||
"@opentelemetry/sdk-trace-node": "1.13.0", | ||
"@types/mocha": "10.0.0", | ||
@@ -67,3 +67,2 @@ "@types/node": "18.6.5", | ||
"request-promise-native": "1.0.9", | ||
"rimraf": "4.1.2", | ||
"sinon": "15.0.0", | ||
@@ -78,5 +77,5 @@ "superagent": "8.0.0", | ||
"dependencies": { | ||
"@opentelemetry/core": "1.12.0", | ||
"@opentelemetry/instrumentation": "0.38.0", | ||
"@opentelemetry/semantic-conventions": "1.12.0", | ||
"@opentelemetry/core": "1.13.0", | ||
"@opentelemetry/instrumentation": "0.39.0", | ||
"@opentelemetry/semantic-conventions": "1.13.0", | ||
"semver": "^7.3.5" | ||
@@ -86,3 +85,3 @@ }, | ||
"sideEffects": false, | ||
"gitHead": "a04090010ee18e17487b449984807cc2b7b6e3e6" | ||
"gitHead": "8fc76896595aac912bf9e15d4f19c167317844c8" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
174692
22
1361
+ Added@opentelemetry/core@1.13.0(transitive)
+ Added@opentelemetry/instrumentation@0.39.0(transitive)
+ Added@opentelemetry/semantic-conventions@1.13.0(transitive)
+ Addedrequire-in-the-middle@7.4.0(transitive)
- Removed@opentelemetry/core@1.12.0(transitive)
- Removed@opentelemetry/instrumentation@0.38.0(transitive)
- Removed@opentelemetry/semantic-conventions@1.12.0(transitive)
- Removedrequire-in-the-middle@6.0.0(transitive)
Updated@opentelemetry/core@1.13.0