diff --git a/CHANGELOG.md b/CHANGELOG.md index 376b1f60b42..0c18cad260a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,12 +16,19 @@ feat(sdk-trace-base): move Sampler declaration into sdk-trace-base [#3088](https ### :house: (Internal) +## 1.5.0 + +### :rocket: (Enhancement) + +* feat(sdk-trace-base): Improve extensibility of BasicTracerProvider [#3023](https://github.com/open-telemetry/opentelemetry-js/pull/3023) @Rauno56 + ## 1.4.0 ### :rocket: (Enhancement) * fix(resources): fix browser compatibility for host and os detectors [#3004](https://github.com/open-telemetry/opentelemetry-js/pull/3004) @legendecas * fix(sdk-trace-base): fix crash on environments without global document [#3000](https://github.com/open-telemetry/opentelemetry-js/pull/3000) @legendecas +* fix(sdk-trace-base): fix spanLimits attribute length/count to consider env values [#3068](https://github.com/open-telemetry/opentelemetry-js/pull/3068) @svetlanabrennan ### :house: (Internal) diff --git a/examples/basic-tracer-node/package.json b/examples/basic-tracer-node/package.json index e8025baa21d..62198948550 100644 --- a/examples/basic-tracer-node/package.json +++ b/examples/basic-tracer-node/package.json @@ -30,5 +30,5 @@ "@opentelemetry/semantic-conventions": "0.25.0", "@opentelemetry/sdk-trace-base": "0.25.0" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme" + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/basic-tracer-node" } diff --git a/examples/grpc-js/package.json b/examples/grpc-js/package.json index 2914fec3ea2..99dc941919f 100644 --- a/examples/grpc-js/package.json +++ b/examples/grpc-js/package.json @@ -40,7 +40,7 @@ "@opentelemetry/sdk-trace-node": "^1.0.1", "google-protobuf": "^3.9.2" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/grpc-js", "devDependencies": { "cross-env": "^6.0.0" } diff --git a/examples/grpc/package.json b/examples/grpc/package.json index 754c956b685..d33861fccf1 100644 --- a/examples/grpc/package.json +++ b/examples/grpc/package.json @@ -41,7 +41,7 @@ "grpc": "^1.23.3", "node-pre-gyp": "0.14.0" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/grpc", "devDependencies": { "cross-env": "^6.0.0" } diff --git a/examples/http/package.json b/examples/http/package.json index f17f0159302..490f9dba75a 100644 --- a/examples/http/package.json +++ b/examples/http/package.json @@ -38,7 +38,7 @@ "@opentelemetry/sdk-trace-node": "0.25.0", "@opentelemetry/sdk-trace-base": "0.25.0" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/http", "devDependencies": { "cross-env": "^6.0.0" } diff --git a/examples/https/package.json b/examples/https/package.json index 8760f561e92..177bf071168 100644 --- a/examples/https/package.json +++ b/examples/https/package.json @@ -39,7 +39,7 @@ "@opentelemetry/sdk-trace-node": "0.25.0", "@opentelemetry/sdk-trace-base": "0.25.0" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/https", "devDependencies": { "cross-env": "^6.0.0" } diff --git a/examples/opentracing-shim/package.json b/examples/opentracing-shim/package.json index 64dd96f89c2..cf880f2b190 100644 --- a/examples/opentracing-shim/package.json +++ b/examples/opentracing-shim/package.json @@ -40,7 +40,7 @@ "@opentelemetry/sdk-trace-base": "0.25.0", "opentracing": "^0.14.4" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/opentracing-shim", "devDependencies": { "cross-env": "^6.0.0" } diff --git a/examples/otlp-exporter-node/package.json b/examples/otlp-exporter-node/package.json index 2182004e7e9..3ba7f67f8a7 100644 --- a/examples/otlp-exporter-node/package.json +++ b/examples/otlp-exporter-node/package.json @@ -1,7 +1,7 @@ { "name": "example-otlp-exporter-node", "private": true, - "version": "0.30.0", + "version": "0.31.0", "description": "Example of using @opentelemetry/collector-exporter in Node.js", "main": "index.js", "scripts": { @@ -29,18 +29,18 @@ }, "dependencies": { "@opentelemetry/api": "^1.1.0", - "@opentelemetry/api-metrics": "0.30.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/exporter-metrics-otlp-grpc": "0.30.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.30.0", - "@opentelemetry/exporter-metrics-otlp-proto": "0.30.0", - "@opentelemetry/exporter-trace-otlp-grpc": "0.30.0", - "@opentelemetry/exporter-trace-otlp-http": "0.30.0", - "@opentelemetry/exporter-trace-otlp-proto": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-metrics-base": "0.30.0", - "@opentelemetry/sdk-trace-base": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0" + "@opentelemetry/api-metrics": "0.31.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.31.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.31.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.31.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.31.0", + "@opentelemetry/exporter-trace-otlp-http": "0.31.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-metrics-base": "0.31.0", + "@opentelemetry/sdk-trace-base": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme" + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/otlp-exporter-node" } diff --git a/examples/tracer-web/package.json b/examples/tracer-web/package.json index 6ffb8cd6134..cf8e660c226 100644 --- a/examples/tracer-web/package.json +++ b/examples/tracer-web/package.json @@ -54,5 +54,5 @@ "@opentelemetry/exporter-metrics-otlp-http": "0.27.0", "@opentelemetry/sdk-metrics-base": "0.27.0" }, - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme" + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/examples/tracer-web" } diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 91691eb6472..8ac2ddd66cd 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -6,23 +6,40 @@ All notable changes to experimental packages in this project will be documented ### :boom: Breaking Change +### :rocket: (Enhancement) + +### :bug: (Bug Fix) + +### :books: (Refine Doc) + +### :house: (Internal) + +## 0.31.0 + +### :boom: Breaking Change + * feature(views): move views registration to MeterProvider constructor [#3066](https://github.com/open-telemetry/opentelemetry-js/pull/3066) @pichlermarc * feat(sdk-metrics-base): split up Singular into Sum and Gauge in MetricData [#3079](https://github.com/open-telemetry/opentelemetry-js/pull/3079) @pichlermarc * removes `DataPointType.SINGULAR`, and replaces it with `DataPointType.SUM` and `DataPointType.GAUGE` * removes `SingularMetricData` and replaces it with `SumMetricData` (including an additional `isMonotonic` flag) and `GaugeMetricData` +* feat(histogram): align collection of optional Histogram properties with spec [#3102](https://github.com/open-telemetry/opentelemetry-js/pull/3079) @pichlermarc + * changes type of `sum` property on `Histogram` to `number | undefined` + * changes type of `min` and `max` properties on `Histogram` to `number | undefined` + * removes `hasMinMax` flag on the exported `Histogram` - this is now indicated by `min` and `max` being `undefined` ### :rocket: (Enhancement) * feat(metrics-api): use common attributes definitions #3038 @legendecas * feat(otlp-proto): pre-compile proto files [#3098](https://github.com/open-telemetry/opentelemetry-js/pull/3098) @legendecas +* feat(opentelemetry-sdk-metrics-base): added InMemoryMetricExporter [#3039](https://github.com/open-telemetry/opentelemetry-js/pull/3039) @weyert ### :bug: (Bug Fix) * fix(histogram): fix maximum when only values < -1 are provided [#3086](https://github.com/open-telemetry/opentelemetry-js/pull/3086) @pichlermarc - -### :books: (Refine Doc) - -### :house: (Internal) +* fix(sdk-metrics-base): fix PeriodicExportingMetricReader keeping Node.js process from exiting + [#3106](https://github.com/open-telemetry/opentelemetry-js/pull/3106) @seemk +* fix(otlp-proto): fixes [#2791](https://github.com/open-telemetry/opentelemetry-js/issues/2791) otlp proto exporters no longer share a single global proto definition + [#3098](https://github.com/open-telemetry/opentelemetry-js/pull/3098) @legendecas ## 0.30.0 diff --git a/experimental/backwards-compatability/node14/package.json b/experimental/backwards-compatability/node14/package.json index 52b879badeb..4a93b5f39ca 100644 --- a/experimental/backwards-compatability/node14/package.json +++ b/experimental/backwards-compatability/node14/package.json @@ -1,6 +1,6 @@ { "name": "backcompat-node14", - "version": "0.30.0", + "version": "0.31.0", "private": true, "description": "Backwards compatability app for node 14 types and the OpenTelemetry Node.js SDK", "main": "index.js", @@ -9,8 +9,8 @@ "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "dependencies": { - "@opentelemetry/sdk-node": "0.30.0", - "@opentelemetry/sdk-trace-base": "1.4.0" + "@opentelemetry/sdk-node": "0.31.0", + "@opentelemetry/sdk-trace-base": "1.5.0" }, "devDependencies": { "@types/node": "^14.0.0", diff --git a/experimental/backwards-compatability/node16/package.json b/experimental/backwards-compatability/node16/package.json index b65b0f29b73..9f9543d6690 100644 --- a/experimental/backwards-compatability/node16/package.json +++ b/experimental/backwards-compatability/node16/package.json @@ -1,6 +1,6 @@ { "name": "backcompat-node16", - "version": "0.30.0", + "version": "0.31.0", "private": true, "description": "Backwards compatability app for node 16 types and the OpenTelemetry Node.js SDK", "main": "index.js", @@ -9,8 +9,8 @@ "peer-api-check": "node ../../../scripts/peer-api-check.js" }, "dependencies": { - "@opentelemetry/sdk-node": "0.30.0", - "@opentelemetry/sdk-trace-base": "1.4.0" + "@opentelemetry/sdk-node": "0.31.0", + "@opentelemetry/sdk-trace-base": "1.5.0" }, "devDependencies": { "@types/node": "^16.0.0", diff --git a/experimental/packages/exporter-trace-otlp-grpc/package.json b/experimental/packages/exporter-trace-otlp-grpc/package.json index 8412dd8eda5..03c25e44c61 100644 --- a/experimental/packages/exporter-trace-otlp-grpc/package.json +++ b/experimental/packages/exporter-trace-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-grpc", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/otlp-exporter-base": "0.30.0", + "@opentelemetry/otlp-exporter-base": "0.31.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/sinon": "10.0.6", @@ -69,10 +69,11 @@ "dependencies": { "@grpc/grpc-js": "^1.5.9", "@grpc/proto-loader": "^0.6.9", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.30.0", - "@opentelemetry/otlp-transformer": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.31.0", + "@opentelemetry/otlp-transformer": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-grpc" } diff --git a/experimental/packages/exporter-trace-otlp-http/package.json b/experimental/packages/exporter-trace-otlp-http/package.json index fb0ce6578c9..62d0cd082cb 100644 --- a/experimental/packages/exporter-trace-otlp-http/package.json +++ b/experimental/packages/exporter-trace-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-http", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry Collector Trace Exporter allows user to send collected traces to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -94,10 +94,11 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/otlp-exporter-base": "0.30.0", - "@opentelemetry/otlp-transformer": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/otlp-exporter-base": "0.31.0", + "@opentelemetry/otlp-transformer": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-http" } diff --git a/experimental/packages/exporter-trace-otlp-proto/package.json b/experimental/packages/exporter-trace-otlp-proto/package.json index ee97d7df61b..93d5740876b 100644 --- a/experimental/packages/exporter-trace-otlp-proto/package.json +++ b/experimental/packages/exporter-trace-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-trace-otlp-proto", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry Collector Exporter allows user to send collected traces to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -67,12 +67,13 @@ }, "dependencies": { "@grpc/proto-loader": "^0.6.9", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/otlp-exporter-base": "0.30.0", - "@opentelemetry/otlp-proto-exporter-base": "0.30.0", - "@opentelemetry/otlp-transformer": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/otlp-exporter-base": "0.31.0", + "@opentelemetry/otlp-proto-exporter-base": "0.31.0", + "@opentelemetry/otlp-transformer": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", "protobufjs": "^6.9.0" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/exporter-trace-otlp-proto" } diff --git a/experimental/packages/opentelemetry-api-metrics/package.json b/experimental/packages/opentelemetry-api-metrics/package.json index 176f9055353..0162c21f68a 100644 --- a/experimental/packages/opentelemetry-api-metrics/package.json +++ b/experimental/packages/opentelemetry-api-metrics/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/api-metrics", - "version": "0.30.0", + "version": "0.31.0", "description": "Public metrics API for OpenTelemetry", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -81,5 +81,6 @@ "ts-mocha": "9.0.2", "typescript": "4.4.4", "webpack": "4.46.0" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-api-metrics" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json index 5a9f5b2a4d5..68fff676399 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-grpc", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/api-metrics": "0.30.0", + "@opentelemetry/api-metrics": "0.31.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/sinon": "10.0.6", @@ -69,11 +69,12 @@ "dependencies": { "@grpc/grpc-js": "^1.5.9", "@grpc/proto-loader": "^0.6.9", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.30.0", - "@opentelemetry/otlp-grpc-exporter-base": "0.30.0", - "@opentelemetry/otlp-transformer": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-metrics-base": "0.30.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.31.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.31.0", + "@opentelemetry/otlp-transformer": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-metrics-base": "0.31.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-grpc" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json index 0e43c77085e..0c6c433fea4 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-http", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -94,11 +94,12 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/api-metrics": "0.30.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/otlp-exporter-base": "0.30.0", - "@opentelemetry/otlp-transformer": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-metrics-base": "0.30.0" - } + "@opentelemetry/api-metrics": "0.31.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/otlp-exporter-base": "0.31.0", + "@opentelemetry/otlp-transformer": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-metrics-base": "0.31.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-http" } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json index 2154a396ff0..b41e349ddcc 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-proto/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-metrics-otlp-proto", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry Collector Metrics Exporter allows user to send collected metrics to the OpenTelemetry Collector using protobuf over HTTP", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -49,7 +49,7 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/api-metrics": "0.30.0", + "@opentelemetry/api-metrics": "0.31.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/sinon": "10.0.6", @@ -68,13 +68,14 @@ }, "dependencies": { "@grpc/proto-loader": "0.6.9", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/exporter-metrics-otlp-http": "0.30.0", - "@opentelemetry/otlp-exporter-base": "0.30.0", - "@opentelemetry/otlp-proto-exporter-base": "0.30.0", - "@opentelemetry/otlp-transformer": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-metrics-base": "0.30.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.31.0", + "@opentelemetry/otlp-exporter-base": "0.31.0", + "@opentelemetry/otlp-proto-exporter-base": "0.31.0", + "@opentelemetry/otlp-transformer": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-metrics-base": "0.31.0", "protobufjs": "^6.9.0" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-metrics-otlp-proto" } diff --git a/experimental/packages/opentelemetry-exporter-prometheus/package.json b/experimental/packages/opentelemetry-exporter-prometheus/package.json index 4d653dbc34d..a922528a83e 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/package.json +++ b/experimental/packages/opentelemetry-exporter-prometheus/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-prometheus", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry Exporter Prometheus provides a metrics endpoint for Prometheus", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -59,8 +59,9 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/api-metrics": "0.30.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/sdk-metrics-base": "0.30.0" - } + "@opentelemetry/api-metrics": "0.31.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/sdk-metrics-base": "0.31.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-exporter-prometheus" } diff --git a/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts b/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts index 93955ecb4bc..af6c6243752 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts +++ b/experimental/packages/opentelemetry-exporter-prometheus/src/PrometheusSerializer.ts @@ -24,7 +24,10 @@ import { DataPoint, Histogram, } from '@opentelemetry/sdk-metrics-base'; -import type { MetricAttributes, MetricAttributeValue } from '@opentelemetry/api-metrics'; +import type { + MetricAttributes, + MetricAttributeValue +} from '@opentelemetry/api-metrics'; import { hrTimeToMilliseconds } from '@opentelemetry/core'; type PrometheusDataTypeLiteral = @@ -52,6 +55,7 @@ function escapeAttributeValue(str: MetricAttributeValue = '') { } const invalidCharacterRegex = /[^a-z0-9_]/gi; + /** * Ensures metric names are valid Prometheus metric names by removing * characters allowed by OpenTelemetry but disallowed by Prometheus. @@ -254,25 +258,28 @@ export class PrometheusSerializer { let results = ''; name = enforcePrometheusNamingConvention(name, type); - const { value, attributes } = dataPoint; + const attributes = dataPoint.attributes; + const histogram = dataPoint.value; const timestamp = hrTimeToMilliseconds(dataPoint.endTime); /** Histogram["bucket"] is not typed with `number` */ for (const key of ['count', 'sum'] as ('count' | 'sum')[]) { - results += stringify( - name + '_' + key, - attributes, - value[key], - this._appendTimestamp ? timestamp : undefined, - undefined - ); + const value = histogram[key]; + if (value != null) + results += stringify( + name + '_' + key, + attributes, + value, + this._appendTimestamp ? timestamp : undefined, + undefined + ); } let cumulativeSum = 0; - const countEntries = value.buckets.counts.entries(); + const countEntries = histogram.buckets.counts.entries(); let infiniteBoundaryDefined = false; for (const [idx, val] of countEntries) { cumulativeSum += val; - const upperBound = value.buckets.boundaries[idx]; + const upperBound = histogram.buckets.boundaries[idx]; /** HistogramAggregator is producing different boundary output - * in one case not including infinity values, in other - * full, e.g. [0, 100] and [0, 100, Infinity] diff --git a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts index 45f2e69f499..befdf624430 100644 --- a/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts +++ b/experimental/packages/opentelemetry-exporter-prometheus/test/PrometheusSerializer.test.ts @@ -355,7 +355,7 @@ describe('PrometheusSerializer', () => { return result; } - it('serialize metric record with ExplicitHistogramAggregation aggregator, cumulative', async () => { + it('serialize cumulative metric record', async () => { const serializer = new PrometheusSerializer(); const result = await testSerializer(serializer); assert.strictEqual( @@ -376,6 +376,53 @@ describe('PrometheusSerializer', () => { `test_bucket{val="2",le="+Inf"} 1 ${mockedHrTimeMs}\n` ); }); + + it('serialize cumulative metric record on instrument that allows negative values', async () => { + const serializer = new PrometheusSerializer(); + const reader = new TestMetricReader(); + const meterProvider = new MeterProvider({ + views: [ + new View({ + aggregation: new ExplicitBucketHistogramAggregation([1, 10, 100]), + instrumentName: '*' + }) + ] + }); + meterProvider.addMetricReader(reader); + const meter = meterProvider.getMeter('test'); + + const upDownCounter = meter.createUpDownCounter('test', { + description: 'foobar', + }); + upDownCounter.add(5, { val: '1' }); + upDownCounter.add(50, { val: '1' }); + upDownCounter.add(120, { val: '1' }); + + upDownCounter.add(5, { val: '2' }); + + const { resourceMetrics, errors } = await reader.collect(); + assert.strictEqual(errors.length, 0); + assert.strictEqual(resourceMetrics.scopeMetrics.length, 1); + assert.strictEqual(resourceMetrics.scopeMetrics[0].metrics.length, 1); + const scopeMetrics = resourceMetrics.scopeMetrics[0]; + + const result = serializer['_serializeScopeMetrics'](scopeMetrics); + assert.strictEqual( + result, + '# HELP test foobar\n' + + '# TYPE test histogram\n' + + `test_count{val="1"} 3 ${mockedHrTimeMs}\n` + + `test_bucket{val="1",le="1"} 0 ${mockedHrTimeMs}\n` + + `test_bucket{val="1",le="10"} 1 ${mockedHrTimeMs}\n` + + `test_bucket{val="1",le="100"} 2 ${mockedHrTimeMs}\n` + + `test_bucket{val="1",le="+Inf"} 3 ${mockedHrTimeMs}\n` + + `test_count{val="2"} 1 ${mockedHrTimeMs}\n` + + `test_bucket{val="2",le="1"} 0 ${mockedHrTimeMs}\n` + + `test_bucket{val="2",le="10"} 1 ${mockedHrTimeMs}\n` + + `test_bucket{val="2",le="100"} 1 ${mockedHrTimeMs}\n` + + `test_bucket{val="2",le="+Inf"} 1 ${mockedHrTimeMs}\n` + ); + }); }); }); diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/package.json b/experimental/packages/opentelemetry-instrumentation-fetch/package.json index c85e761d0bb..4bc78ee0f39 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/package.json +++ b/experimental/packages/opentelemetry-instrumentation-fetch/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-fetch", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry fetch automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -56,9 +56,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/context-zone": "1.4.0", - "@opentelemetry/propagator-b3": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", + "@opentelemetry/context-zone": "1.5.0", + "@opentelemetry/propagator-b3": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/sinon": "10.0.6", @@ -87,9 +87,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/instrumentation": "0.30.0", - "@opentelemetry/sdk-trace-web": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/instrumentation": "0.31.0", + "@opentelemetry/sdk-trace-web": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-fetch" } diff --git a/experimental/packages/opentelemetry-instrumentation-grpc/package.json b/experimental/packages/opentelemetry-instrumentation-grpc/package.json index 96d56928000..34a4c196ce1 100644 --- a/experimental/packages/opentelemetry-instrumentation-grpc/package.json +++ b/experimental/packages/opentelemetry-instrumentation-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-grpc", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry grpc automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -48,10 +48,10 @@ "@grpc/grpc-js": "1.5.9", "@grpc/proto-loader": "0.6.9", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/context-async-hooks": "1.4.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", - "@opentelemetry/sdk-trace-node": "1.4.0", + "@opentelemetry/context-async-hooks": "1.5.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", + "@opentelemetry/sdk-trace-node": "1.5.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/semver": "7.3.9", @@ -71,8 +71,9 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/api-metrics": "0.30.0", - "@opentelemetry/instrumentation": "0.30.0", - "@opentelemetry/semantic-conventions": "1.4.0" - } + "@opentelemetry/api-metrics": "0.31.0", + "@opentelemetry/instrumentation": "0.31.0", + "@opentelemetry/semantic-conventions": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-grpc" } diff --git a/experimental/packages/opentelemetry-instrumentation-http/package.json b/experimental/packages/opentelemetry-instrumentation-http/package.json index d6b78c55b22..f88f8f2a283 100644 --- a/experimental/packages/opentelemetry-instrumentation-http/package.json +++ b/experimental/packages/opentelemetry-instrumentation-http/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-http", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry http/https automatic instrumentation package.", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,9 +46,9 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/context-async-hooks": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", - "@opentelemetry/sdk-trace-node": "1.4.0", + "@opentelemetry/context-async-hooks": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", + "@opentelemetry/sdk-trace-node": "1.5.0", "@types/got": "9.6.12", "@types/mocha": "8.2.3", "@types/node": "14.17.33", @@ -74,9 +74,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/instrumentation": "0.30.0", - "@opentelemetry/semantic-conventions": "1.4.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/instrumentation": "0.31.0", + "@opentelemetry/semantic-conventions": "1.5.0", "semver": "^7.3.5" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-http" } diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json index 6f9b785885d..e3a0a65d0ad 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/instrumentation-xml-http-request", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry XMLHttpRequest automatic instrumentation package.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -56,9 +56,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/context-zone": "1.4.0", - "@opentelemetry/propagator-b3": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", + "@opentelemetry/context-zone": "1.5.0", + "@opentelemetry/propagator-b3": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/sinon": "10.0.6", @@ -87,9 +87,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/instrumentation": "0.30.0", - "@opentelemetry/sdk-trace-web": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/instrumentation": "0.31.0", + "@opentelemetry/sdk-trace-web": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation-xml-http-request" } diff --git a/experimental/packages/opentelemetry-instrumentation/package.json b/experimental/packages/opentelemetry-instrumentation/package.json index de05a2bec12..ba98fedf01c 100644 --- a/experimental/packages/opentelemetry-instrumentation/package.json +++ b/experimental/packages/opentelemetry-instrumentation/package.json @@ -1,9 +1,9 @@ { "name": "@opentelemetry/instrumentation", - "version": "0.30.0", + "version": "0.31.0", "description": "Base class for node which OpenTelemetry instrumentation modules extend", "author": "OpenTelemetry Authors", - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-instrumentation", "license": "Apache-2.0", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -68,7 +68,7 @@ "url": "https://github.com/open-telemetry/opentelemetry-js/issues" }, "dependencies": { - "@opentelemetry/api-metrics": "0.30.0", + "@opentelemetry/api-metrics": "0.31.0", "require-in-the-middle": "^5.0.3", "semver": "^7.3.2", "shimmer": "^1.2.1" diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/package.json b/experimental/packages/opentelemetry-sdk-metrics-base/package.json index 4245e958ee4..0078e8ae8e2 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/package.json +++ b/experimental/packages/opentelemetry-sdk-metrics-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-metrics-base", - "version": "0.30.0", + "version": "0.31.0", "description": "Work in progress OpenTelemetry metrics SDK", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -77,9 +77,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/api-metrics": "0.30.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/resources": "1.4.0", + "@opentelemetry/api-metrics": "0.31.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/resources": "1.5.0", "lodash.merge": "4.6.2" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-metrics-base" } diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/src/aggregator/Histogram.ts b/experimental/packages/opentelemetry-sdk-metrics-base/src/aggregator/Histogram.ts index 8566f4aa7f2..5a271980dec 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/src/aggregator/Histogram.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/src/aggregator/Histogram.ts @@ -18,16 +18,38 @@ import { Accumulation, AccumulationRecord, Aggregator, - AggregatorKind, - Histogram, + AggregatorKind } from './types'; -import { HistogramMetricData, DataPointType } from '../export/MetricData'; +import { + DataPointType, + HistogramMetricData +} from '../export/MetricData'; import { HrTime } from '@opentelemetry/api'; -import { InstrumentDescriptor } from '../InstrumentDescriptor'; +import { + InstrumentDescriptor, + InstrumentType +} from '../InstrumentDescriptor'; import { Maybe } from '../utils'; import { AggregationTemporality } from '../export/AggregationTemporality'; -function createNewEmptyCheckpoint(boundaries: number[]): Histogram { +/** + * Internal value type for HistogramAggregation. + * Differs from the exported type as undefined sum/min/max complicate arithmetic + * performed by this aggregation, but are required to be undefined in the exported types. + */ +interface InternalHistogram { + buckets: { + boundaries: number[]; + counts: number[]; + }; + sum: number; + count: number; + hasMinMax: boolean; + min: number; + max: number; +} + +function createNewEmptyCheckpoint(boundaries: number[]): InternalHistogram { const counts = boundaries.map(() => 0); counts.push(0); return { @@ -48,7 +70,7 @@ export class HistogramAccumulation implements Accumulation { public startTime: HrTime, private readonly _boundaries: number[], private _recordMinMax = true, - private _current: Histogram = createNewEmptyCheckpoint(_boundaries) + private _current: InternalHistogram = createNewEmptyCheckpoint(_boundaries) ) {} record(value: number): void { @@ -75,7 +97,7 @@ export class HistogramAccumulation implements Accumulation { this.startTime = startTime; } - toPointValue(): Histogram { + toPointValue(): InternalHistogram { return this._current; } } @@ -181,11 +203,25 @@ export class HistogramAggregator implements Aggregator { aggregationTemporality, dataPointType: DataPointType.HISTOGRAM, dataPoints: accumulationByAttributes.map(([attributes, accumulation]) => { + const pointValue = accumulation.toPointValue(); + + // determine if instrument allows negative values. + const allowsNegativeValues = + (descriptor.type === InstrumentType.UP_DOWN_COUNTER) || + (descriptor.type === InstrumentType.OBSERVABLE_GAUGE) || + (descriptor.type === InstrumentType.OBSERVABLE_UP_DOWN_COUNTER); + return { attributes, startTime: accumulation.startTime, endTime, - value: accumulation.toPointValue(), + value: { + min: pointValue.hasMinMax ? pointValue.min : undefined, + max: pointValue.hasMinMax ? pointValue.max : undefined, + sum: !allowsNegativeValues ? pointValue.sum : undefined, + buckets: pointValue.buckets, + count: pointValue.count + }, }; }) }; diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/src/aggregator/types.ts b/experimental/packages/opentelemetry-sdk-metrics-base/src/aggregator/types.ts index 827a2af47ba..8f4f2e1acc1 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/src/aggregator/types.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/src/aggregator/types.ts @@ -57,11 +57,10 @@ export interface Histogram { boundaries: number[]; counts: number[]; }; - sum: number; + sum?: number; count: number; - hasMinMax: boolean; - min: number; - max: number; + min?: number; + max?: number; } /** diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/src/export/InMemoryMetricExporter.ts b/experimental/packages/opentelemetry-sdk-metrics-base/src/export/InMemoryMetricExporter.ts new file mode 100644 index 00000000000..c0ec67e74ab --- /dev/null +++ b/experimental/packages/opentelemetry-sdk-metrics-base/src/export/InMemoryMetricExporter.ts @@ -0,0 +1,76 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ExportResultCode } from '@opentelemetry/core'; +import { ExportResult } from '@opentelemetry/core'; +import { InstrumentType } from '../InstrumentDescriptor'; +import { AggregationTemporality } from './AggregationTemporality'; +import { ResourceMetrics } from './MetricData'; +import { PushMetricExporter } from './MetricExporter'; + +/** + * In-memory Metrics Exporter is a Push Metric Exporter + * which accumulates metrics data in the local memory and + * allows to inspect it (useful for e.g. unit tests). + */ +export class InMemoryMetricExporter implements PushMetricExporter { + protected _shutdown = false; + protected _aggregationTemporality: AggregationTemporality; + private _metrics: ResourceMetrics[] = []; + + constructor(aggregationTemporality: AggregationTemporality) { + this._aggregationTemporality = aggregationTemporality; + } + + /** + * @inheritedDoc + */ + export(metrics: ResourceMetrics, resultCallback: (result: ExportResult) => void): void { + // Avoid storing metrics when exporter is shutdown + if (this. _shutdown) { + setTimeout(() => resultCallback({ code: ExportResultCode.FAILED }), 0); + return; + } + + this._metrics.push(metrics); + setTimeout(() => resultCallback({ code: ExportResultCode.SUCCESS }), 0); + } + + /** + * Returns all the collected resource metrics + * @returns ResourceMetrics[] + */ + public getMetrics(): ResourceMetrics[] { + return this._metrics; + } + + forceFlush(): Promise { + return Promise.resolve(); + } + + reset() { + this._metrics = []; + } + + selectAggregationTemporality(_instrumentType: InstrumentType): AggregationTemporality { + return this._aggregationTemporality; + } + + shutdown(): Promise { + this._shutdown = true; + return Promise.resolve(); + } +} diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/src/export/MetricData.ts b/experimental/packages/opentelemetry-sdk-metrics-base/src/export/MetricData.ts index 0522f10deae..36e031e2d31 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/src/export/MetricData.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/src/export/MetricData.ts @@ -19,8 +19,8 @@ import { MetricAttributes } from '@opentelemetry/api-metrics'; import { InstrumentationScope } from '@opentelemetry/core'; import { Resource } from '@opentelemetry/resources'; import { InstrumentDescriptor } from '../InstrumentDescriptor'; -import { Histogram } from '../aggregator/types'; import { AggregationTemporality } from './AggregationTemporality'; +import { Histogram } from '../aggregator/types'; /** * Basic metric data fields. diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/src/export/PeriodicExportingMetricReader.ts b/experimental/packages/opentelemetry-sdk-metrics-base/src/export/PeriodicExportingMetricReader.ts index ababba83733..3e188c02931 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/src/export/PeriodicExportingMetricReader.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/src/export/PeriodicExportingMetricReader.ts @@ -15,7 +15,11 @@ */ import * as api from '@opentelemetry/api'; -import { ExportResultCode, globalErrorHandler } from '@opentelemetry/core'; +import { + ExportResultCode, + globalErrorHandler, + unrefTimer +} from '@opentelemetry/core'; import { MetricReader } from './MetricReader'; import { AggregationTemporality } from './AggregationTemporality'; import { InstrumentType } from '../InstrumentDescriptor'; @@ -100,6 +104,7 @@ export class PeriodicExportingMetricReader extends MetricReader { globalErrorHandler(err); } }, this._exportInterval); + unrefTimer(this._interval); } protected async onForceFlush(): Promise { diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/src/index.ts b/experimental/packages/opentelemetry-sdk-metrics-base/src/index.ts index e60bb31daea..ce8f7b67c25 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/src/index.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/src/index.ts @@ -21,6 +21,7 @@ export * from './export/MetricExporter'; export * from './export/MetricProducer'; export * from './export/MetricReader'; export * from './export/PeriodicExportingMetricReader'; +export * from './export/InMemoryMetricExporter'; export { InstrumentDescriptor, InstrumentType } from './InstrumentDescriptor'; export * from './Meter'; export * from './MeterProvider'; diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/test/Instruments.test.ts b/experimental/packages/opentelemetry-sdk-metrics-base/test/Instruments.test.ts index bf4c496084d..2bb47be3b2d 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/test/Instruments.test.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/test/Instruments.test.ts @@ -25,7 +25,8 @@ import { MeterProvider, MetricReader, DataPoint, - DataPointType + DataPointType, + Histogram } from '../src'; import { TestMetricReader } from './export/TestMetricReader'; import { @@ -36,7 +37,6 @@ import { defaultResource, defaultInstrumentationScope } from './util'; -import { Histogram } from '../src/aggregator/types'; import { ObservableResult, ValueType } from '@opentelemetry/api-metrics'; describe('Instruments', () => { @@ -301,7 +301,6 @@ describe('Instruments', () => { }, count: 2, sum: 10, - hasMinMax: true, max: 10, min: 0 }, @@ -315,7 +314,6 @@ describe('Instruments', () => { }, count: 2, sum: 100, - hasMinMax: true, max: 100, min: 0 }, @@ -358,7 +356,6 @@ describe('Instruments', () => { }, count: 2, sum: 110, - hasMinMax: true, min: 20, max: 90 }, @@ -386,7 +383,6 @@ describe('Instruments', () => { }, count: 4, sum: 220, - hasMinMax: true, min: 10, max: 100 }, @@ -430,7 +426,6 @@ describe('Instruments', () => { }, count: 2, sum: 10.1, - hasMinMax: true, max: 10, min: 0.1 }, @@ -444,7 +439,6 @@ describe('Instruments', () => { }, count: 2, sum: 100.1, - hasMinMax: true, max: 100, min: 0.1 }, diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/test/aggregator/Histogram.test.ts b/experimental/packages/opentelemetry-sdk-metrics-base/test/aggregator/Histogram.test.ts index 3d0b3a1264a..f5d5ea7e330 100644 --- a/experimental/packages/opentelemetry-sdk-metrics-base/test/aggregator/Histogram.test.ts +++ b/experimental/packages/opentelemetry-sdk-metrics-base/test/aggregator/Histogram.test.ts @@ -16,10 +16,21 @@ import { HrTime } from '@opentelemetry/api'; import * as assert from 'assert'; -import { AggregationTemporality } from '../../src'; -import { HistogramAccumulation, HistogramAggregator } from '../../src/aggregator'; -import { MetricData, DataPointType } from '../../src/export/MetricData'; -import { commonValues, defaultInstrumentDescriptor } from '../util'; +import { + AggregationTemporality, + InstrumentType, + DataPointType, + MetricData +} from '../../src'; +import { + HistogramAccumulation, + HistogramAggregator +} from '../../src/aggregator'; +import { + commonValues, + defaultInstrumentDescriptor +} from '../util'; +import { ValueType } from '@opentelemetry/api-metrics'; describe('HistogramAggregator', () => { describe('createAccumulation', () => { @@ -108,7 +119,7 @@ describe('HistogramAggregator', () => { }); describe('toMetricData', () => { - it('transform without exception', () => { + it('should transform to expected data with recordMinMax = true', () => { const aggregator = new HistogramAggregator([1, 10, 100], true); const startTime: HrTime = [0, 0]; @@ -133,7 +144,6 @@ describe('HistogramAggregator', () => { }, count: 2, sum: 1, - hasMinMax: true, min: 0, max: 1 }, @@ -147,6 +157,85 @@ describe('HistogramAggregator', () => { endTime, ), expected); }); + + it('should transform to expected data with recordMinMax = false', () => { + const aggregator = new HistogramAggregator([1, 10, 100], false); + + const startTime: HrTime = [0, 0]; + const endTime: HrTime = [1, 1]; + const accumulation = aggregator.createAccumulation(startTime); + accumulation.record(0); + accumulation.record(1); + + const expected: MetricData = { + descriptor: defaultInstrumentDescriptor, + aggregationTemporality: AggregationTemporality.CUMULATIVE, + dataPointType: DataPointType.HISTOGRAM, + dataPoints: [ + { + attributes: {}, + startTime, + endTime, + value: { + buckets: { + boundaries: [1, 10, 100], + counts: [1, 1, 0, 0], + }, + count: 2, + sum: 1, + min: undefined, + max: undefined + }, + }, + ], + }; + assert.deepStrictEqual(aggregator.toMetricData( + defaultInstrumentDescriptor, + AggregationTemporality.CUMULATIVE, + [[{}, accumulation]], + endTime, + ), expected); + }); + + function testSum(instrumentType: InstrumentType, expectSum: boolean) { + const aggregator = new HistogramAggregator([1, 10, 100], true); + + const startTime: HrTime = [0, 0]; + const endTime: HrTime = [1, 1]; + + const accumulation = aggregator.createAccumulation(startTime); + accumulation.record(0); + accumulation.record(1); + accumulation.record(4); + + const aggregatedData = aggregator.toMetricData( + { + name: 'default_metric', + description: 'a simple instrument', + type: instrumentType, + unit: '1', + valueType: ValueType.DOUBLE, + }, + AggregationTemporality.CUMULATIVE, + [[{}, accumulation]], + endTime, + ); + + assert.notStrictEqual(aggregatedData, undefined); + assert.strictEqual(aggregatedData?.dataPoints[0].value.sum, expectSum ? 5 : undefined); + } + + describe('should have undefined sum when used with', () => { + it('UpDownCounter', () => testSum(InstrumentType.UP_DOWN_COUNTER, false)); + it('ObservableUpDownCounter', () => testSum(InstrumentType.OBSERVABLE_UP_DOWN_COUNTER, false)); + it('ObservableUpDownCounter', () => testSum(InstrumentType.OBSERVABLE_GAUGE, false)); + }); + + describe('should include sum with', () => { + it('UpDownCounter', () => testSum(InstrumentType.COUNTER, true)); + it('ObservableUpDownCounter', () => testSum(InstrumentType.HISTOGRAM, true)); + it('ObservableUpDownCounter', () => testSum(InstrumentType.OBSERVABLE_COUNTER, true)); + }); }); }); diff --git a/experimental/packages/opentelemetry-sdk-metrics-base/test/export/InMemoryMetricExporter.test.ts b/experimental/packages/opentelemetry-sdk-metrics-base/test/export/InMemoryMetricExporter.test.ts new file mode 100644 index 00000000000..7afb3299a46 --- /dev/null +++ b/experimental/packages/opentelemetry-sdk-metrics-base/test/export/InMemoryMetricExporter.test.ts @@ -0,0 +1,147 @@ +/* + * Copyright The OpenTelemetry Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ExportResultCode } from '@opentelemetry/core'; +import { Resource } from '@opentelemetry/resources'; +import * as metrics from '@opentelemetry/api-metrics'; +import assert = require('assert'); +import { AggregationTemporality } from '../../src/export/AggregationTemporality'; +import { InMemoryMetricExporter } from '../../src/export/InMemoryMetricExporter'; +import { ResourceMetrics } from '../../src/export/MetricData'; +import { PeriodicExportingMetricReader } from '../../src/export/PeriodicExportingMetricReader'; +import { MeterProvider } from '../../src/MeterProvider'; +import { defaultResource } from '../util'; + +async function waitForNumberOfExports(exporter: InMemoryMetricExporter , numberOfExports: number): Promise { + if (numberOfExports <= 0) { + throw new Error('numberOfExports must be greater than or equal to 0'); + } + + let totalExports = 0; + while (totalExports < numberOfExports) { + await new Promise(resolve => setTimeout(resolve, 20)); + const exportedMetrics = exporter.getMetrics(); + totalExports = exportedMetrics.length; + } + + return exporter.getMetrics(); +} + +describe('InMemoryMetricExporter', () => { + let exporter: InMemoryMetricExporter; + let meterProvider: MeterProvider; + let meterReader: PeriodicExportingMetricReader; + let meter: metrics.Meter; + + beforeEach(() => { + exporter = new InMemoryMetricExporter(AggregationTemporality.CUMULATIVE); + meterProvider = new MeterProvider({ resource: defaultResource }); + meter = meterProvider.getMeter('InMemoryMetricExporter', '1.0.0'); + meterReader = new PeriodicExportingMetricReader({ + exporter: exporter, + exportIntervalMillis: 100, + exportTimeoutMillis: 100 + }); + meterProvider.addMetricReader(meterReader); + }); + + afterEach(async () => { + await exporter.shutdown(); + await meterReader.shutdown(); + }); + + it('should return failed result code', done => { + exporter.shutdown().then(() => { + const resource = new Resource({ + 'resource-attribute': 'resource attribute value', + }); + const resourceMetrics: ResourceMetrics = { + resource: resource, + scopeMetrics: + [ + { + scope: { + name: 'mylib', + version: '0.1.0', + schemaUrl: 'http://url.to.schema' + }, + metrics: [], + } + ] + }; + exporter.export(resourceMetrics, result => { + assert.ok(result.code === ExportResultCode.FAILED); + meterReader.shutdown().then(() => { + done(); + }); + }); + }); + }); + + it('should reset metrics when reset is called', async () => { + const counter = meter.createCounter('counter_total', { + description: 'a test description', + }); + const counterAttribute = { key1: 'attributeValue1' }; + counter.add(10, counterAttribute); + + const exportedMetrics = await waitForNumberOfExports(exporter, 1); + assert.ok(exportedMetrics.length > 0); + + exporter.reset(); + + const otherMetrics = exporter.getMetrics(); + assert.ok(otherMetrics.length === 0); + + await exporter.shutdown(); + await meterReader.shutdown(); + }); + + it('should be able to access metric', async () => { + const counter = meter.createCounter('counter_total', { + description: 'a test description', + }); + const counterAttribute = { key1: 'attributeValue1' }; + counter.add(10, counterAttribute); + counter.add(10, counterAttribute); + + const histogram = meter.createHistogram('histogram', { description: 'a histogram' }); + histogram.record(10); + histogram.record(100); + histogram.record(1000); + + const exportedMetrics = await waitForNumberOfExports(exporter, 1); + assert.ok(exportedMetrics.length > 0); + + const resourceMetrics = exportedMetrics.shift(); + assert.ok(resourceMetrics); + const firstScopeMetric = resourceMetrics?.scopeMetrics.shift(); + assert.ok(firstScopeMetric); + assert.ok(firstScopeMetric.metrics.length > 0); + const [counterMetric, histogramMetric] = firstScopeMetric.metrics; + assert.ok(counterMetric.descriptor.name, 'counter_total'); + assert.ok(counterMetric.dataPoints.length > 0); + const counterDataPoint = counterMetric.dataPoints.shift(); + assert.ok(counterDataPoint); + assert.strictEqual(counterDataPoint.attributes, counterAttribute); + + assert.ok(histogramMetric.descriptor.name, 'histogram'); + assert.ok(histogramMetric.dataPoints.length > 0); + const histogramDataPoint = histogramMetric.dataPoints.shift(); + assert.ok(histogramDataPoint); + + await meterReader.shutdown(); + }); +}); diff --git a/experimental/packages/opentelemetry-sdk-node/package.json b/experimental/packages/opentelemetry-sdk-node/package.json index dc6861c82cc..1949eb45bf7 100644 --- a/experimental/packages/opentelemetry-sdk-node/package.json +++ b/experimental/packages/opentelemetry-sdk-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-node", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry SDK for Node.js", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -44,21 +44,21 @@ "access": "public" }, "dependencies": { - "@opentelemetry/api-metrics": "0.30.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/instrumentation": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-metrics-base": "0.30.0", - "@opentelemetry/sdk-trace-base": "1.4.0", - "@opentelemetry/sdk-trace-node": "1.4.0" + "@opentelemetry/api-metrics": "0.31.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/instrumentation": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-metrics-base": "0.31.0", + "@opentelemetry/sdk-trace-base": "1.5.0", + "@opentelemetry/sdk-trace-node": "1.5.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.2.0" }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.2.0", - "@opentelemetry/context-async-hooks": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0", + "@opentelemetry/context-async-hooks": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/semver": "7.3.9", @@ -72,5 +72,6 @@ "ts-loader": "8.3.0", "ts-mocha": "9.0.2", "typescript": "4.4.4" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/opentelemetry-sdk-node" } diff --git a/experimental/packages/otlp-exporter-base/package.json b/experimental/packages/otlp-exporter-base/package.json index 25a7cfcb019..06ad95e222c 100644 --- a/experimental/packages/otlp-exporter-base/package.json +++ b/experimental/packages/otlp-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-exporter-base", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry OTLP Exporter base (for internal use only)", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -61,7 +61,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.4.0" + "@opentelemetry/core": "1.5.0" }, "devDependencies": { "@opentelemetry/api": "^1.0.0", @@ -80,5 +80,6 @@ }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-exporter-base" } diff --git a/experimental/packages/otlp-grpc-exporter-base/package.json b/experimental/packages/otlp-grpc-exporter-base/package.json index 6f2b22a4068..3225cced417 100644 --- a/experimental/packages/otlp-grpc-exporter-base/package.json +++ b/experimental/packages/otlp-grpc-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-grpc-exporter-base", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry OTLP-gRPC Exporter base (for internal use only)", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -51,9 +51,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": "^1.0.0", - "@opentelemetry/otlp-transformer": "0.30.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", + "@opentelemetry/otlp-transformer": "0.31.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/sinon": "10.0.6", @@ -73,7 +73,8 @@ "dependencies": { "@grpc/grpc-js": "^1.5.9", "@grpc/proto-loader": "^0.6.9", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/otlp-exporter-base": "0.30.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/otlp-exporter-base": "0.31.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-grpc-exporter-base" } diff --git a/experimental/packages/otlp-proto-exporter-base/package.json b/experimental/packages/otlp-proto-exporter-base/package.json index 6a2379ff3e8..1cf1f731e43 100644 --- a/experimental/packages/otlp-proto-exporter-base/package.json +++ b/experimental/packages/otlp-proto-exporter-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/otlp-proto-exporter-base", - "version": "0.30.0", + "version": "0.31.0", "description": "OpenTelemetry OTLP-HTTP-protobuf Exporter base (for internal use only)", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -64,7 +64,8 @@ }, "dependencies": { "@grpc/proto-loader": "^0.6.9", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/otlp-exporter-base": "0.30.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/otlp-exporter-base": "0.31.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-proto-exporter-base" } diff --git a/experimental/packages/otlp-transformer/package.json b/experimental/packages/otlp-transformer/package.json index c2b4fe357f3..b404d0fa5c6 100644 --- a/experimental/packages/otlp-transformer/package.json +++ b/experimental/packages/otlp-transformer/package.json @@ -4,7 +4,7 @@ "publishConfig": { "access": "public" }, - "version": "0.30.0", + "version": "0.31.0", "description": "Transform OpenTelemetry SDK data into OTLP", "module": "build/esm/index.js", "esnext": "build/esnext/index.js", @@ -77,10 +77,11 @@ "webpack": "4.46.0" }, "dependencies": { - "@opentelemetry/api-metrics": "0.30.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-metrics-base": "0.30.0", - "@opentelemetry/sdk-trace-base": "1.4.0" - } + "@opentelemetry/api-metrics": "0.31.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-metrics-base": "0.31.0", + "@opentelemetry/sdk-trace-base": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/experimental/packages/otlp-transformer" } diff --git a/experimental/packages/otlp-transformer/src/metrics/internal.ts b/experimental/packages/otlp-transformer/src/metrics/internal.ts index 8c8f89b04c3..17946ffc466 100644 --- a/experimental/packages/otlp-transformer/src/metrics/internal.ts +++ b/experimental/packages/otlp-transformer/src/metrics/internal.ts @@ -128,8 +128,8 @@ function toHistogramDataPoints( explicitBounds: histogram.buckets.boundaries, count: histogram.count, sum: histogram.sum, - min: histogram.hasMinMax ? histogram.min : undefined, - max: histogram.hasMinMax ? histogram.max : undefined, + min: histogram.min, + max: histogram.max, startTimeUnixNano: hrTimeToNanoseconds(dataPoint.startTime), timeUnixNano: hrTimeToNanoseconds( dataPoint.endTime diff --git a/experimental/packages/otlp-transformer/test/metrics.test.ts b/experimental/packages/otlp-transformer/test/metrics.test.ts index bc1d85bf22c..d188d4ea8b4 100644 --- a/experimental/packages/otlp-transformer/test/metrics.test.ts +++ b/experimental/packages/otlp-transformer/test/metrics.test.ts @@ -219,9 +219,8 @@ describe('Metrics', () => { sum: number, boundaries: number[], counts: number[], aggregationTemporality: AggregationTemporality, - hasMinMax: boolean, - min: number, - max: number): MetricData { + min?: number, + max?: number): MetricData { return { descriptor: { description: 'this is a description', @@ -237,7 +236,6 @@ describe('Metrics', () => { value: { sum: sum, count: count, - hasMinMax: hasMinMax, min: min, max: max, buckets: { @@ -477,7 +475,7 @@ describe('Metrics', () => { describe('serializes a histogram metric record', () => { it('with min/max', () => { const exportRequest = createExportMetricsServiceRequest( - [createResourceMetrics([createHistogramMetrics(2, 9, [5], [1, 1], AggregationTemporality.CUMULATIVE, true,1, 8)])] + [createResourceMetrics([createHistogramMetrics(2, 9, [5], [1, 1], AggregationTemporality.CUMULATIVE, 1, 8)])] ); assert.ok(exportRequest); @@ -522,7 +520,7 @@ describe('Metrics', () => { it('without min/max', () => { const exportRequest = createExportMetricsServiceRequest( - [createResourceMetrics([createHistogramMetrics(2, 9, [5], [1, 1], AggregationTemporality.CUMULATIVE, false, Infinity, -1)])] + [createResourceMetrics([createHistogramMetrics(2, 9, [5], [1, 1], AggregationTemporality.CUMULATIVE)])] ); assert.ok(exportRequest); diff --git a/integration-tests/propagation-validation-server/package.json b/integration-tests/propagation-validation-server/package.json index 35af516f70c..4a49b677577 100644 --- a/integration-tests/propagation-validation-server/package.json +++ b/integration-tests/propagation-validation-server/package.json @@ -1,6 +1,6 @@ { "name": "propagation-validation-server", - "version": "1.4.0", + "version": "1.5.0", "description": "server for w3c tests", "main": "validation_server.js", "private": true, @@ -12,9 +12,9 @@ }, "dependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/context-async-hooks": "1.4.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", + "@opentelemetry/context-async-hooks": "1.5.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", "axios": "0.24.0", "body-parser": "1.19.0", "express": "4.17.1" diff --git a/packages/opentelemetry-context-async-hooks/package.json b/packages/opentelemetry-context-async-hooks/package.json index b6683dae876..5113ec3fa01 100644 --- a/packages/opentelemetry-context-async-hooks/package.json +++ b/packages/opentelemetry-context-async-hooks/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-async-hooks", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry AsyncHooks-based Context Manager", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -56,5 +56,6 @@ }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.2.0" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-async-hooks" } diff --git a/packages/opentelemetry-context-zone-peer-dep/package.json b/packages/opentelemetry-context-zone-peer-dep/package.json index f1fad46a6e3..b9da2078c7e 100644 --- a/packages/opentelemetry-context-zone-peer-dep/package.json +++ b/packages/opentelemetry-context-zone-peer-dep/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-zone-peer-dep", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Context Zone with peer dependency for zone.js", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -84,5 +84,6 @@ "@opentelemetry/api": ">=1.0.0 <1.2.0", "zone.js": "^0.10.2 || ^0.11.0" }, - "sideEffects": false + "sideEffects": false, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-zone-peer-dep" } diff --git a/packages/opentelemetry-context-zone/package.json b/packages/opentelemetry-context-zone/package.json index 2cc99f61996..808650d525b 100644 --- a/packages/opentelemetry-context-zone/package.json +++ b/packages/opentelemetry-context-zone/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/context-zone", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Context Zone", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -74,8 +74,9 @@ "webpack-merge": "5.8.0" }, "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.4.0", + "@opentelemetry/context-zone-peer-dep": "1.5.0", "zone.js": "^0.11.0" }, - "sideEffects": true + "sideEffects": true, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-context-zone" } diff --git a/packages/opentelemetry-core/package.json b/packages/opentelemetry-core/package.json index 9b31319303c..9fb72efd18c 100644 --- a/packages/opentelemetry-core/package.json +++ b/packages/opentelemetry-core/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/core", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Core provides constants and utilities shared by all OpenTelemetry SDK packages.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -91,6 +91,7 @@ "@opentelemetry/api": ">=1.0.0 <1.2.0" }, "dependencies": { - "@opentelemetry/semantic-conventions": "1.4.0" - } + "@opentelemetry/semantic-conventions": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core" } diff --git a/packages/opentelemetry-core/src/utils/environment.ts b/packages/opentelemetry-core/src/utils/environment.ts index def0fe48469..05ba058f0fa 100644 --- a/packages/opentelemetry-core/src/utils/environment.ts +++ b/packages/opentelemetry-core/src/utils/environment.ts @@ -16,6 +16,7 @@ import { DiagLogLevel } from '@opentelemetry/api'; import { TracesSamplerValues } from './sampling'; +import { _globalThis } from '../platform/browser/globalThis'; const DEFAULT_LIST_SEPARATOR = ','; @@ -283,3 +284,13 @@ export function parseEnvironment(values: RAW_ENVIRONMENT): ENVIRONMENT { return environment; } + +/** + * Get environment in node or browser without + * populating default values. + */ +export function getEnvWithoutDefaults(): ENVIRONMENT { + return typeof process !== 'undefined' ? + parseEnvironment(process.env as RAW_ENVIRONMENT) : + parseEnvironment(_globalThis as typeof globalThis & RAW_ENVIRONMENT); +} diff --git a/packages/opentelemetry-exporter-jaeger/package.json b/packages/opentelemetry-exporter-jaeger/package.json index c4cb745acfd..bfa8ea7d4b0 100644 --- a/packages/opentelemetry-exporter-jaeger/package.json +++ b/packages/opentelemetry-exporter-jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-jaeger", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Exporter Jaeger allows user to send collected traces to Jaeger", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -45,7 +45,7 @@ }, "devDependencies": { "@opentelemetry/api": "^1.0.0", - "@opentelemetry/resources": "1.4.0", + "@opentelemetry/resources": "1.5.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/sinon": "10.0.6", @@ -62,9 +62,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0", "jaeger-client": "^3.15.0" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-jaeger" } diff --git a/packages/opentelemetry-exporter-zipkin/package.json b/packages/opentelemetry-exporter-zipkin/package.json index 8a8344fb1d2..c64eafe92f3 100644 --- a/packages/opentelemetry-exporter-zipkin/package.json +++ b/packages/opentelemetry-exporter-zipkin/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/exporter-zipkin", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Zipkin Exporter allows the user to send collected traces to Zipkin.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -91,9 +91,10 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-exporter-zipkin" } diff --git a/packages/opentelemetry-propagator-b3/package.json b/packages/opentelemetry-propagator-b3/package.json index 2d5f1ad6d0d..537a2bf582f 100644 --- a/packages/opentelemetry-propagator-b3/package.json +++ b/packages/opentelemetry-propagator-b3/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-b3", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry B3 propagator provides context propagation for systems that are using the B3 header format", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -51,7 +51,7 @@ "access": "public" }, "dependencies": { - "@opentelemetry/core": "1.4.0" + "@opentelemetry/core": "1.5.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.2.0" @@ -68,5 +68,6 @@ "ts-loader": "8.3.0", "ts-mocha": "9.0.2", "typescript": "4.4.4" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-b3" } diff --git a/packages/opentelemetry-propagator-jaeger/package.json b/packages/opentelemetry-propagator-jaeger/package.json index f0766ad596d..203048641d7 100644 --- a/packages/opentelemetry-propagator-jaeger/package.json +++ b/packages/opentelemetry-propagator-jaeger/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/propagator-jaeger", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Jaeger propagator provides HTTP header propagation for systems that are using Jaeger HTTP header format.", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -80,6 +80,7 @@ "@opentelemetry/api": ">=1.0.0 <1.2.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0" - } + "@opentelemetry/core": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-propagator-jaeger" } diff --git a/packages/opentelemetry-resources/package.json b/packages/opentelemetry-resources/package.json index 93b9d44bdfc..a90e27d0334 100644 --- a/packages/opentelemetry-resources/package.json +++ b/packages/opentelemetry-resources/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/resources", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry SDK resources", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -89,7 +89,8 @@ "@opentelemetry/api": ">=1.0.0 <1.2.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-resources" } diff --git a/packages/opentelemetry-sdk-trace-base/package.json b/packages/opentelemetry-sdk-trace-base/package.json index 08b27b6ab7b..c83a54d56f6 100644 --- a/packages/opentelemetry-sdk-trace-base/package.json +++ b/packages/opentelemetry-sdk-trace-base/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-base", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Tracing", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -91,8 +91,9 @@ "@opentelemetry/api": ">=1.0.0 <1.2.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-base" } diff --git a/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts b/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts index b0560fc3f15..aae02ad1ad0 100644 --- a/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts +++ b/packages/opentelemetry-sdk-trace-base/src/BasicTracerProvider.ts @@ -31,7 +31,7 @@ import { } from '@opentelemetry/core'; import { Resource } from '@opentelemetry/resources'; import { SpanProcessor, Tracer } from '.'; -import { DEFAULT_CONFIG } from './config'; +import { loadDefaultConfig } from './config'; import { MultiSpanProcessor } from './MultiSpanProcessor'; import { NoopSpanProcessor } from './export/NoopSpanProcessor'; import { SDKRegistrationConfig, TracerConfig } from './types'; @@ -74,7 +74,7 @@ export class BasicTracerProvider implements TracerProvider { readonly resource: Resource; constructor(config: TracerConfig = {}) { - const mergedConfig = merge({}, DEFAULT_CONFIG, reconfigureLimits(config)); + const mergedConfig = merge({}, loadDefaultConfig(), reconfigureLimits(config)); this.resource = mergedConfig.resource ?? Resource.empty(); this.resource = Resource.default().merge(this.resource); this._config = Object.assign({}, mergedConfig, { diff --git a/packages/opentelemetry-sdk-trace-base/src/config.ts b/packages/opentelemetry-sdk-trace-base/src/config.ts index 375fd9208a5..47e32f5b35d 100644 --- a/packages/opentelemetry-sdk-trace-base/src/config.ts +++ b/packages/opentelemetry-sdk-trace-base/src/config.ts @@ -31,25 +31,30 @@ const FALLBACK_OTEL_TRACES_SAMPLER = TracesSamplerValues.AlwaysOn; const DEFAULT_RATIO = 1; /** - * Default configuration. For fields with primitive values, any user-provided + * Load default configuration. For fields with primitive values, any user-provided * value will override the corresponding default value. For fields with * non-primitive values (like `spanLimits`), the user-provided value will be * used to extend the default value. */ -export const DEFAULT_CONFIG = { - sampler: buildSamplerFromEnv(env), - forceFlushTimeoutMillis: 30000, - generalLimits: { - attributeValueLengthLimit: getEnv().OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT, - attributeCountLimit: getEnv().OTEL_ATTRIBUTE_COUNT_LIMIT, - }, - spanLimits: { - attributeValueLengthLimit: getEnv().OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT, - attributeCountLimit: getEnv().OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT, - linkCountLimit: getEnv().OTEL_SPAN_LINK_COUNT_LIMIT, - eventCountLimit: getEnv().OTEL_SPAN_EVENT_COUNT_LIMIT, - }, -}; + +// object needs to be wrapped in this function and called when needed otherwise +// envs are parsed before tests are ran - causes tests using these envs to fail +export function loadDefaultConfig() { + return { + sampler: buildSamplerFromEnv(env), + forceFlushTimeoutMillis: 30000, + generalLimits: { + attributeValueLengthLimit: getEnv().OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT, + attributeCountLimit: getEnv().OTEL_ATTRIBUTE_COUNT_LIMIT, + }, + spanLimits: { + attributeValueLengthLimit: getEnv().OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT, + attributeCountLimit: getEnv().OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT, + linkCountLimit: getEnv().OTEL_SPAN_LINK_COUNT_LIMIT, + eventCountLimit: getEnv().OTEL_SPAN_EVENT_COUNT_LIMIT, + }, + }; +} /** * Based on environment, builds a sampler, complies with specification. diff --git a/packages/opentelemetry-sdk-trace-base/src/utility.ts b/packages/opentelemetry-sdk-trace-base/src/utility.ts index 3afd5243dad..819d725d493 100644 --- a/packages/opentelemetry-sdk-trace-base/src/utility.ts +++ b/packages/opentelemetry-sdk-trace-base/src/utility.ts @@ -14,9 +14,14 @@ * limitations under the License. */ -import { buildSamplerFromEnv, DEFAULT_CONFIG } from './config'; +import { buildSamplerFromEnv, loadDefaultConfig } from './config'; import { Sampler } from './Sampler'; import { SpanLimits, TracerConfig, GeneralLimits } from './types'; +import { + DEFAULT_ATTRIBUTE_COUNT_LIMIT, + DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT, + getEnvWithoutDefaults, +} from '@opentelemetry/core'; /** * Function to merge Default configuration (as specified in './config') with @@ -31,6 +36,8 @@ export function mergeConfig(userConfig: TracerConfig): TracerConfig & { sampler: buildSamplerFromEnv(), }; + const DEFAULT_CONFIG = loadDefaultConfig(); + const target = Object.assign( {}, DEFAULT_CONFIG, @@ -61,21 +68,27 @@ export function mergeConfig(userConfig: TracerConfig): TracerConfig & { export function reconfigureLimits(userConfig: TracerConfig): TracerConfig { const spanLimits = Object.assign({}, userConfig.spanLimits); + const parsedEnvConfig = getEnvWithoutDefaults(); + /** - * When span attribute count limit is not defined, but general attribute count limit is defined - * Then, span attribute count limit will be same as general one + * Reassign span attribute count limit to use first non null value defined by user or use default value */ - if (spanLimits.attributeCountLimit == null && userConfig.generalLimits?.attributeCountLimit != null) { - spanLimits.attributeCountLimit = userConfig.generalLimits.attributeCountLimit; - } + spanLimits.attributeCountLimit = + userConfig.spanLimits?.attributeCountLimit ?? + userConfig.generalLimits?.attributeCountLimit ?? + parsedEnvConfig.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT ?? + parsedEnvConfig.OTEL_ATTRIBUTE_COUNT_LIMIT ?? + DEFAULT_ATTRIBUTE_COUNT_LIMIT; /** - * When span attribute value length limit is not defined, but general attribute value length limit is defined - * Then, span attribute value length limit will be same as general one + * Reassign span attribute value length limit to use first non null value defined by user or use default value */ - if (spanLimits.attributeValueLengthLimit == null && userConfig.generalLimits?.attributeValueLengthLimit != null) { - spanLimits.attributeValueLengthLimit = userConfig.generalLimits.attributeValueLengthLimit; - } + spanLimits.attributeValueLengthLimit = + userConfig.spanLimits?.attributeValueLengthLimit ?? + userConfig.generalLimits?.attributeValueLengthLimit ?? + parsedEnvConfig.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT ?? + parsedEnvConfig.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT ?? + DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT; return Object.assign({}, userConfig, { spanLimits }); } diff --git a/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts index 2800a552778..05ec1152de1 100644 --- a/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-base/test/common/BasicTracerProvider.test.ts @@ -208,6 +208,108 @@ describe('BasicTracerProvider', () => { }); }); + describe('when attribute value length limit is defined via env', () => { + it('should have general attribute value length limits value as defined with env', () => { + envSource.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT = '115'; + const tracer = new BasicTracerProvider().getTracer('default'); + const generalLimits = tracer.getGeneralLimits(); + assert.strictEqual(generalLimits.attributeValueLengthLimit, 115); + delete envSource.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT; + }); + it('should have span attribute value length limit value same as general limit value', () => { + envSource.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT = '125'; + const tracer = new BasicTracerProvider().getTracer('default'); + const generalLimits = tracer.getGeneralLimits(); + const spanLimits = tracer.getSpanLimits(); + assert.strictEqual(generalLimits.attributeValueLengthLimit, 125); + assert.strictEqual(spanLimits.attributeValueLengthLimit, 125); + delete envSource.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT; + }); + it('should have span and general attribute value length limits as defined in env', () => { + envSource.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT = '125'; + envSource.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT = '109'; + const tracer = new BasicTracerProvider().getTracer('default'); + const spanLimits = tracer.getSpanLimits(); + const generalLimits = tracer.getGeneralLimits(); + assert.strictEqual(generalLimits.attributeValueLengthLimit, 125); + assert.strictEqual(spanLimits.attributeValueLengthLimit, 109); + delete envSource.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT; + delete envSource.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT; + }); + it('should have span attribute value length limit as deafult of Infinity', () => { + envSource.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT = '125'; + envSource.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT = 'Infinity'; + const tracer = new BasicTracerProvider().getTracer('default'); + const spanLimits = tracer.getSpanLimits(); + const generalLimits = tracer.getGeneralLimits(); + assert.strictEqual(generalLimits.attributeValueLengthLimit, 125); + assert.strictEqual(spanLimits.attributeValueLengthLimit, Infinity); + delete envSource.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT; + delete envSource.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT; + }); + }); + + describe('when attribute value length limit is not defined via env', () => { + it('should use default value of Infinity', () => { + const tracer = new BasicTracerProvider().getTracer('default'); + const spanLimits = tracer.getSpanLimits(); + const generalLimits = tracer.getGeneralLimits(); + assert.strictEqual(generalLimits.attributeValueLengthLimit, Infinity); + assert.strictEqual(spanLimits.attributeValueLengthLimit, Infinity); + }); + }); + + describe('when attribute count limit is defined via env', () => { + it('should general attribute count limit as defined with env', () => { + envSource.OTEL_ATTRIBUTE_COUNT_LIMIT = '25'; + const tracer = new BasicTracerProvider({}).getTracer('default'); + const generalLimits = tracer.getGeneralLimits(); + assert.strictEqual(generalLimits.attributeCountLimit, 25); + delete envSource.OTEL_ATTRIBUTE_COUNT_LIMIT; + }); + it('should have span attribute count limit value same as general limit value', () => { + envSource.OTEL_ATTRIBUTE_COUNT_LIMIT = '20'; + const tracer = new BasicTracerProvider().getTracer('default'); + const generalLimits = tracer.getGeneralLimits(); + const spanLimits = tracer.getSpanLimits(); + assert.strictEqual(generalLimits.attributeCountLimit, 20); + assert.strictEqual(spanLimits.attributeCountLimit, 20); + delete envSource.OTEL_ATTRIBUTE_COUNT_LIMIT; + }); + it('should have span and general attribute count limits as defined in env', () => { + envSource.OTEL_ATTRIBUTE_COUNT_LIMIT = '20'; + envSource.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT = '35'; + const tracer = new BasicTracerProvider().getTracer('default'); + const spanLimits = tracer.getSpanLimits(); + const generalLimits = tracer.getGeneralLimits(); + assert.strictEqual(generalLimits.attributeCountLimit, 20); + assert.strictEqual(spanLimits.attributeCountLimit, 35); + delete envSource.OTEL_ATTRIBUTE_COUNT_LIMIT; + delete envSource.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT; + }); + it('should have span attribute count limit as default of 128', () => { + envSource.OTEL_ATTRIBUTE_COUNT_LIMIT = '20'; + envSource.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT = '128'; + const tracer = new BasicTracerProvider().getTracer('default'); + const spanLimits = tracer.getSpanLimits(); + const generalLimits = tracer.getGeneralLimits(); + assert.strictEqual(generalLimits.attributeCountLimit, 20); + assert.strictEqual(spanLimits.attributeCountLimit, 128); + delete envSource.OTEL_ATTRIBUTE_COUNT_LIMIT; + delete envSource.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT; + }); + }); + + describe('when attribute count limit is not defined via env', () => { + it('should use default value of 128', () => { + const tracer = new BasicTracerProvider().getTracer('default'); + const spanLimits = tracer.getSpanLimits(); + const generalLimits = tracer.getGeneralLimits(); + assert.strictEqual(generalLimits.attributeCountLimit, 128); + assert.strictEqual(spanLimits.attributeCountLimit, 128); + }); + }); + describe('when "eventCountLimit" is defined', () => { it('should have tracer with defined value', () => { const tracer = new BasicTracerProvider({ diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index 9185b113ad4..d595dd8c1fa 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-node", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Node SDK provides automatic telemetry (tracing, metrics, etc) for Node.js applications", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -46,8 +46,8 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.2.0", - "@opentelemetry/resources": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0", + "@opentelemetry/resources": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "@types/semver": "7.3.9", @@ -64,11 +64,12 @@ "@opentelemetry/api": ">=1.0.0 <1.2.0" }, "dependencies": { - "@opentelemetry/context-async-hooks": "1.4.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/propagator-b3": "1.4.0", - "@opentelemetry/propagator-jaeger": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", + "@opentelemetry/context-async-hooks": "1.5.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/propagator-b3": "1.5.0", + "@opentelemetry/propagator-jaeger": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", "semver": "^7.3.5" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-node" } diff --git a/packages/opentelemetry-sdk-trace-web/package.json b/packages/opentelemetry-sdk-trace-web/package.json index e3147a22d2a..c81c06a56e7 100644 --- a/packages/opentelemetry-sdk-trace-web/package.json +++ b/packages/opentelemetry-sdk-trace-web/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/sdk-trace-web", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry Web Tracer", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -57,9 +57,9 @@ "devDependencies": { "@babel/core": "7.16.0", "@opentelemetry/api": ">=1.0.0 <1.2.0", - "@opentelemetry/context-zone": "1.4.0", - "@opentelemetry/propagator-b3": "1.4.0", - "@opentelemetry/resources": "1.4.0", + "@opentelemetry/context-zone": "1.5.0", + "@opentelemetry/propagator-b3": "1.5.0", + "@opentelemetry/resources": "1.5.0", "@types/jquery": "3.5.8", "@types/mocha": "8.2.3", "@types/node": "14.17.33", @@ -91,8 +91,9 @@ "@opentelemetry/api": ">=1.0.0 <1.2.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0" - } + "@opentelemetry/core": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0" + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-sdk-trace-web" } diff --git a/packages/opentelemetry-semantic-conventions/package.json b/packages/opentelemetry-semantic-conventions/package.json index edcc780bb82..48ef3f37a16 100644 --- a/packages/opentelemetry-semantic-conventions/package.json +++ b/packages/opentelemetry-semantic-conventions/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/semantic-conventions", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTelemetry semantic conventions", "main": "build/src/index.js", "module": "build/esm/index.js", @@ -60,5 +60,6 @@ "sinon": "12.0.1", "ts-mocha": "9.0.2", "typescript": "4.4.4" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-semantic-conventions" } diff --git a/packages/opentelemetry-shim-opentracing/package.json b/packages/opentelemetry-shim-opentracing/package.json index 91b0f8e0faf..19dba951835 100644 --- a/packages/opentelemetry-shim-opentracing/package.json +++ b/packages/opentelemetry-shim-opentracing/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/shim-opentracing", - "version": "1.4.0", + "version": "1.5.0", "description": "OpenTracing to OpenTelemetry shim", "main": "build/src/index.js", "types": "build/src/index.d.ts", @@ -43,9 +43,9 @@ }, "devDependencies": { "@opentelemetry/api": ">=1.0.0 <1.2.0", - "@opentelemetry/propagator-b3": "1.4.0", - "@opentelemetry/propagator-jaeger": "1.4.0", - "@opentelemetry/sdk-trace-base": "1.4.0", + "@opentelemetry/propagator-b3": "1.5.0", + "@opentelemetry/propagator-jaeger": "1.5.0", + "@opentelemetry/sdk-trace-base": "1.5.0", "@types/mocha": "8.2.3", "@types/node": "14.17.33", "codecov": "3.8.3", @@ -59,8 +59,9 @@ "@opentelemetry/api": ">=1.0.0 <1.2.0" }, "dependencies": { - "@opentelemetry/core": "1.4.0", - "@opentelemetry/semantic-conventions": "1.4.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/semantic-conventions": "1.5.0", "opentracing": "^0.14.4" - } + }, + "homepage": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-shim-opentracing" } diff --git a/packages/template/package.json b/packages/template/package.json index 0d73e720ac0..bc657873409 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -1,13 +1,13 @@ { "name": "@opentelemetry/template", - "version": "1.4.0", + "version": "1.5.0", "private": true, "publishConfig": { "access": "restricted" }, "description": "> TODO: description", "author": "OpenTelemetry Authors", - "homepage": "https://github.com/open-telemetry/opentelemetry-js#readme", + "Update homepage location": "https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/template", "license": "Apache-2.0", "main": "build/src/index.js", "types": "build/src/index.d.ts", diff --git a/selenium-tests/package.json b/selenium-tests/package.json index 149572731f4..99dd5f51f11 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -1,6 +1,6 @@ { "name": "@opentelemetry/selenium-tests", - "version": "1.4.0", + "version": "1.5.0", "private": true, "description": "OpenTelemetry Selenium Tests", "main": "index.js", @@ -56,16 +56,16 @@ "@opentelemetry/api": "^1.0.0" }, "dependencies": { - "@opentelemetry/context-zone-peer-dep": "1.4.0", - "@opentelemetry/core": "1.4.0", - "@opentelemetry/exporter-trace-otlp-http": "0.30.0", - "@opentelemetry/exporter-zipkin": "1.4.0", - "@opentelemetry/instrumentation": "0.30.0", - "@opentelemetry/instrumentation-fetch": "0.30.0", - "@opentelemetry/instrumentation-xml-http-request": "0.30.0", - "@opentelemetry/sdk-metrics-base": "0.30.0", - "@opentelemetry/sdk-trace-base": "1.4.0", - "@opentelemetry/sdk-trace-web": "1.4.0", + "@opentelemetry/context-zone-peer-dep": "1.5.0", + "@opentelemetry/core": "1.5.0", + "@opentelemetry/exporter-trace-otlp-http": "0.31.0", + "@opentelemetry/exporter-zipkin": "1.5.0", + "@opentelemetry/instrumentation": "0.31.0", + "@opentelemetry/instrumentation-fetch": "0.31.0", + "@opentelemetry/instrumentation-xml-http-request": "0.31.0", + "@opentelemetry/sdk-metrics-base": "0.31.0", + "@opentelemetry/sdk-trace-base": "1.5.0", + "@opentelemetry/sdk-trace-web": "1.5.0", "zone.js": "0.11.4" } }