github open-telemetry/opentelemetry-java v1.14.0
Version v1.14.0

latest releases: v1.42.1, v1.42.0, v1.41.0...
2 years ago

This release targets the OpenTelemetry SDK 1.14.0.

The metrics SDK is stable! New stable artifacts include:

  • io.opentelemetry:opentelemetry-sdk-metrics (also now included in io.opentelemetry:opentelemetry-sdk)
  • io.opentelemetry:opentelemetry-exporter-otlp-metrics (also now included in io.opentelemetry:opentelemetry-exporter-otlp)
  • io.opentelemetry:opentelemetry-exporter-otlp-http-metrics
  • Metrics testing components have been moved from io.opentelemetry:opentelemetry-sdk-metrics-testing to the stable io.opentelemetry:opentelemetry-sdk-testing.

While the API of the metrics SDK is now stable, there are a couple of known issues that will be addressed in the next release:

  • The start time is incorrect for delta metrics when the first recording for a set of attributes occurs after the first collections (#4400).
  • Registering multiple readers results in incorrect metrics (#4436).

SDK

Traces

  • Fix bug where non-runtime exception breaks BatchSpanProcessor.
  • Fix bug preventing attribute limits from applying to exception events.

Logs

  • BREAKING: Drop deprecated methods referencing InstrumentationLibraryInfo from Log SDK.

Metrics

  • Instrument name is validated. If invalid, a warning is logged and a noop instrument is returned.
  • Default unit is empty instead of 1. If an invalid unit is set, a warning is logged and empty is used.
  • Ensure symmetry between type of PointData and their type of exemplars (double or long).
  • BREAKING: Rename MetricReader#flush() to MetricReader#forceFlush().
  • Introduce AggregationTemporalitySelector interface for selecting aggregation temporality based on instrument. MetricReader and MetricExporter extend AggregationTemporalitySelector.

SDK Extensions

  • BREAKING: Remove deprecated option to specify temporality with otel.exporter.otlp.metrics.temporality. Use otel.exporter.otlp.metrics.temporality.preference instead.
  • Log warning when AwsXrayPropagator can't identify parent span id.
  • Fix jaeger remote sampling bug preventing correct parsing of 0-probability sampling strategies.

Exporter

  • Fix prometheus exporter formatting bug when there are no attributes.
  • Ensure prometheus metrics with the same name are serialized as a group.
  • BREAKING: OtlpHttpMetricExporterBuilder and OtlpGrpcMetricExporterBuilder configure aggregation temporality via #setAggregationTemporalitySelector(AggregationTemporalitySelector).

Testing

  • BREAKING: Metrics testing components added to stable io.opentelemetry:opentelemetry-sdk-testing module, including InMemoryMetricReader, InMemoryMetricExporter, and MetricAssertions.assertThat(MetricData) has been moved to OpenTelemetryAssertions.assertThat(MetricData).
  • BREAKING: The patterns for metrics assertions have been adjusted to better align with assertj conventions. See #4444 for examples demonstrating the change in assertion patterns.
  • BREAKING: Metric assertion class names have been simplified.
  • Add TraceAssert.hasSpansSatisfyingExactlyInAnyOrder(..) methods.

Micrometer shim

  • Instrumentation scope name changed to io.opentelemetry.micrometer1shim.

Project tooling

  • Many improvements to the build and release workflows. Big thanks to @trask for driving standardization across opentelemetry-java, opentelemetry-java-instrumentation, and opentelemetry-java-contrib!

🙇 Thank you

This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

@anuraaga
@arminru
@cbos
@chrismgrayftsinc
@gfelbing
@jack-berg
@jkwatson
@jsuereth
@kubawach
@laurit
@mateuszrzeszutek
@middlewareman
@OliverO2
@trask
@wallezhang
@ZQiannnn

Don't miss a new opentelemetry-java release

NewReleases is sending notifications on new releases.