diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f923c0ae8..c12dfb48e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,106 @@ ## Unreleased +This release is a notable release for metrics: + +* The base2 exponential histogram aggregation has been marked as stable. To use, configure + your `MetricExporter` with a default aggregation + of `Aggregation.base2ExponentialBucketHistogram()` for histogram instruments. If using OTLP + exporter with autoconfigure, + set `OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION=BASE2_EXPONENTIAL_BUCKET_HISTOGRAM`. + If using configuring OTLP programatically, + use `Otlp*MetricExporterBuilder#setDefaultAggregationSelector(DefaultAggregationSelector)`. +* The metrics SDK undergone significant internal refactoring which results in reduced complexity and + significantly reduced memory allocation during metric collection / export. + +### API + +#### Logs + +* WARNING: Split out Event API from Log API. Event API is now published in `opentelemetry-api-events`. + API / SDK usage has also changed - see PR for details. + ([#5049](https://github.com/open-telemetry/opentelemetry-java/pull/5049)) + +### SDK + +* Add shutdown / close to `OpenTelemetrySdk` + ([#5100](https://github.com/open-telemetry/opentelemetry-java/pull/5100)) + +#### Metrics + +* Base2 exponential histogram aggregations are now stable. Add `base2ExponentialBucketHistogram()` + to `Aggregation`. + ([#5143](https://github.com/open-telemetry/opentelemetry-java/pull/5143)) +* Promote exponential histogram data interfaces to stable package + ([#5120](https://github.com/open-telemetry/opentelemetry-java/pull/5120)) +* Add Base2 prefix to internal exponential histogram classes + ([#5179](https://github.com/open-telemetry/opentelemetry-java/pull/5179)) +* Add MaxScale config parameter to `Base2ExponentialBucketHistogram` + ([#5044](https://github.com/open-telemetry/opentelemetry-java/pull/5044)) +* Add close method to `MetricReader` + ([#5109](https://github.com/open-telemetry/opentelemetry-java/pull/5109)) +* Reuse `AggregatorHandle` with cumulative temporality to reduce allocations + ([#5142](https://github.com/open-telemetry/opentelemetry-java/pull/5142)) +* Delete notion of accumulation to reduce allocations + ([#5154](https://github.com/open-telemetry/opentelemetry-java/pull/5154)) +* Delete bound instruments + ([#5157](https://github.com/open-telemetry/opentelemetry-java/pull/5157)) +* Reuse aggregation handles for delta temporality to reduce allocations + ([#5176](https://github.com/open-telemetry/opentelemetry-java/pull/5176)) + +#### Exporter + +* Add proper shutdown implementations for all exporters + ([#5113](https://github.com/open-telemetry/opentelemetry-java/pull/5113)) + +#### SDK Extensions + +* WARNING: Remove deprecated autoconfigure exemplar filter names. Previous names `none`, `all` + , `with_sampled_trace` have been removed. Use `always_off`, `always_on`, `trace_based` instead. + ([#5098](https://github.com/open-telemetry/opentelemetry-java/pull/5098)) +* Add autoconfigure support for "none" option for propagator value + ([#5121](https://github.com/open-telemetry/opentelemetry-java/pull/5121)) +* Add autoconfigure support for `parentbased_jaeger_remote` sampler + ([#5123](https://github.com/open-telemetry/opentelemetry-java/pull/5123)) +* Autoconfigure closes up autoconfigured resources in case of exception + ([#5117](https://github.com/open-telemetry/opentelemetry-java/pull/5117)) +* View file based config has switched from snakeyaml to snakeyaml-engine for YAML parsing. + ([#5138](https://github.com/open-telemetry/opentelemetry-java/pull/5138)) +* Fix autoconfigure resource providers property docs + ([#5135](https://github.com/open-telemetry/opentelemetry-java/pull/5135)) + +#### Testing + +* WARNING: Merge `opentelemetry-sdk-metrics-testing` into `opentelemetry-sdk-testing`. Stop + publishing `opentelemetry-sdk-metrics-testing`. + ([#5144](https://github.com/open-telemetry/opentelemetry-java/pull/5144)) +* Sort spans by start time (parents before children as tiebreaker) to avoid common causes for flaky + tests + ([#5026](https://github.com/open-telemetry/opentelemetry-java/pull/5026)) +* Add resource assertion methods to `SpanDataAssert` and `MetricAssert` + ([#5160](https://github.com/open-telemetry/opentelemetry-java/pull/5160)) + + +### Semantic Conventions + +* Update semconv to 1.18.0 + ([#5188](https://github.com/open-telemetry/opentelemetry-java/pull/5188)) + ([#5134](https://github.com/open-telemetry/opentelemetry-java/pull/5134)) + +### OpenTracing Shim + +* Refactor to remove internal objects `BaseShimObject` and `TelemetryInfo` + ([#5087](https://github.com/open-telemetry/opentelemetry-java/pull/5087)) +* WARNING: Minimize public surface area of OpenTracingShim. Remove `createTracerShim()` + , `createTracerShim(Tracer)`, `createTracerShim(Tracer, OpenTracingPropagators)`. + Add `createTracerShim(TracerProvder,TextMapPropagator,TextMapPropagator)`. + ([#5110](https://github.com/open-telemetry/opentelemetry-java/pull/5110)) + +### Project tooling + +* Add OWASP dependency check + ([#5177](https://github.com/open-telemetry/opentelemetry-java/pull/5177)) + ## Version 1.22.0 (2023-01-06) ### API diff --git a/README.md b/README.md index 7fa1d3b96a..c7fa7aef53 100644 --- a/README.md +++ b/README.md @@ -221,12 +221,13 @@ dependency as follows, replacing `{{artifact-id}}` with the value from the "Arti ### API -| Component | Description | Artifact ID | Version | -|-----------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------|-------------------------------------------------------------| -| [API](./api/all) | OpenTelemetry API, including metrics, traces, baggage, context | `opentelemetry-api` | 1.22.0 | -| [Logs API](./api/logs) | OpenTelemetry Log API for emitting events and bridging log frameworks (NOT a replacement for application logging frameworks like SLF4J, JUL, etc.) | `opentelemetry-api-logs` | 1.22.0-alpha | -| [Context API](./context) | OpenTelemetry context API | `opentelemetry-context` | 1.22.0 | -| [Semantic Conventions](./semconv) | Generated code for OpenTelemetry semantic conventions | `opentelemetry-semconv` | 1.22.0-alpha | +| Component | Description | Artifact ID | Version | +|-----------------------------------|--------------------------------------------------------------------------------------------------------------------------------|----------------------------|-------------------------------------------------------------| +| [API](./api/all) | OpenTelemetry API, including metrics, traces, baggage, context | `opentelemetry-api` | 1.22.0 | +| [Events API](./api/logs) | OpenTelemetry Event API for emitting events. | `opentelemetry-api-events` | TODO | +| [Logs API](./api/logs) | OpenTelemetry Log API for bridging log frameworks (NOT a replacement for application logging frameworks like SLF4J, JUL, etc.) | `opentelemetry-api-logs` | 1.22.0-alpha | +| [Context API](./context) | OpenTelemetry context API | `opentelemetry-context` | 1.22.0 | +| [Semantic Conventions](./semconv) | Generated code for OpenTelemetry semantic conventions | `opentelemetry-semconv` | 1.22.0-alpha | ### API Extensions diff --git a/RELEASING.md b/RELEASING.md index e305b2de20..abe7cbddea 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -6,9 +6,11 @@ directory. Additionally, ensure that appropriate `@since` annotations are added the public APIs. When preparing the change log, you can use -`git log upstream/v$MAJOR.$((MINOR-1)).x..upstream/v$MAJOR.$MINOR.x --graph --first-parent` -or the Github [compare tool](https://github.com/open-telemetry/opentelemetry-java/compare/) -to view a summary of all commits since last release as a reference. +the [draft-change-log-entries.sh](./.github/scripts/draft-change-log-entries.sh) script to assist +with drafting. Alternatively, +use `git log upstream/v$MAJOR.$((MINOR-1)).x..upstream/v$MAJOR.$MINOR.x --graph --first-parent` or +the Github [compare tool](https://github.com/open-telemetry/opentelemetry-java/compare/) to view a +summary of all commits since last release as a reference. ## Release cadence diff --git a/sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/Aggregation.java b/sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/Aggregation.java index 5568a1caae..ba8470a8ed 100644 --- a/sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/Aggregation.java +++ b/sdk/metrics/src/main/java/io/opentelemetry/sdk/metrics/Aggregation.java @@ -72,6 +72,8 @@ public interface Aggregation { /** * Aggregates measurements into a base-2 {@link MetricDataType#EXPONENTIAL_HISTOGRAM} using the * default {@code maxBuckets} and {@code maxScale}. + * + * @since 1.23.0 */ static Aggregation base2ExponentialBucketHistogram() { return Base2ExponentialHistogramAggregation.getDefault(); @@ -86,6 +88,7 @@ public interface Aggregation { * given the {@code maxBuckets}, the scale is reduced until the measurements can be * accommodated. Setting maxScale may reduce the number of downscales. Additionally, the * performance of computing bucket index is improved when scale is {@code <= 0}. + * @since 1.23.0 */ static Aggregation base2ExponentialBucketHistogram(int maxBuckets, int maxScale) { return Base2ExponentialHistogramAggregation.create(maxBuckets, maxScale); diff --git a/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/TracesAssert.java b/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/TracesAssert.java index 295db2b7ea..e120ae7c85 100644 --- a/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/TracesAssert.java +++ b/sdk/testing/src/main/java/io/opentelemetry/sdk/testing/assertj/TracesAssert.java @@ -45,6 +45,8 @@ public final class TracesAssert /** * Returns an assertion for a list of traces. The provided spans will be grouped into traces by * their trace ID. + * + * @since 1.23.0 */ public static TracesAssert assertThat(List spanData) { Map> traces =