Version v1.14.0
The metrics SDK is stable! New stable artifacts include:
io.opentelemetry:opentelemetry-sdk-metrics
(also now included inio.opentelemetry:opentelemetry-sdk
)io.opentelemetry:opentelemetry-exporter-otlp-metrics
(also now included inio.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 stableio.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()
toMetricReader#forceFlush()
. - Introduce
AggregationTemporalitySelector
interface for selecting aggregation temporality based on instrument.MetricReader
andMetricExporter
extendAggregationTemporalitySelector
.
SDK Extensions
- BREAKING: Remove deprecated option to specify temporality with
otel.exporter.otlp.metrics.temporality
. Useotel.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
andOtlpGrpcMetricExporterBuilder
configure aggregation temporality via#setAggregationTemporalitySelector(AggregationTemporalitySelector)
.
Testing
- BREAKING: Metrics testing components added to stable
io.opentelemetry:opentelemetry-sdk-testing
module, includingInMemoryMetricReader
,InMemoryMetricExporter
, andMetricAssertions.assertThat(MetricData)
has been moved toOpenTelemetryAssertions.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
, andopentelemetry-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