Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,90 @@

## Unreleased

### API

* Add null guards and API usage logging for tracing, metrics, propagation, and context APIs
([#8913](https://github.com/open-telemetry/opentelemetry-java/pull/8913), [#8968](https://github.com/open-telemetry/opentelemetry-java/pull/8968))
* Add stable `io.opentelemetry.api.impl.Base16EncodingUtils` and `TemporaryBuffers` utilities
([#8929](https://github.com/open-telemetry/opentelemetry-java/pull/8929), [#8955](https://github.com/open-telemetry/opentelemetry-java/pull/8955))
* Fix uncompilable Javadoc examples in context APIs
([#8934](https://github.com/open-telemetry/opentelemetry-java/pull/8934))

#### Incubating

* Avoid false type warnings in `DeclarativeConfigProperties.toMap()`
([#8921](https://github.com/open-telemetry/opentelemetry-java/pull/8921))

#### Extensions

* Trace propagators: Handle malformed URL escapes in Jaeger headers
([#8912](https://github.com/open-telemetry/opentelemetry-java/pull/8912))
* Trace propagators: Include the B3 debug header in multi-header propagation fields
([#8930](https://github.com/open-telemetry/opentelemetry-java/pull/8930))
* Trace propagators: Fix hexadecimal flag parsing in Jaeger headers
([#8975](https://github.com/open-telemetry/opentelemetry-java/pull/8975))

### SDK

* Remove cross-module internal utility dependencies from resource and retry code
([#8916](https://github.com/open-telemetry/opentelemetry-java/pull/8916))
* Add experimental `SdkResourceProvider` support shared by tracer, meter, and logger providers
([#8865](https://github.com/open-telemetry/opentelemetry-java/pull/8865))

#### Traces

* Retain invalid span links with attributes or trace state
([#8917](https://github.com/open-telemetry/opentelemetry-java/pull/8917))

#### Metrics

* Use a dedicated export worker in `PeriodicMetricReader`, queue concurrent flushes, and add `setExporterTimeout()` with a default equal to the export interval
([#8827](https://github.com/open-telemetry/opentelemetry-java/pull/8827))

#### Exporters

* Logging: Fall back to the observed timestamp in `SystemOutLogRecordExporter` when the timestamp is unset
([#8944](https://github.com/open-telemetry/opentelemetry-java/pull/8944))
* OTLP: Close the JDK HTTP response body on unsupported `Content-Encoding`
([#8962](https://github.com/open-telemetry/opentelemetry-java/pull/8962))
* OTLP: Match the `Host` header case-insensitively in the managed-channel gRPC sender
([#8957](https://github.com/open-telemetry/opentelemetry-java/pull/8957))
* OTLP: Fix exporter metric server attributes for hosts that `java.net.URI` cannot parse
([#8941](https://github.com/open-telemetry/opentelemetry-java/pull/8941))
* OTLP: Pass the original exception to the JDK HTTP sender's error callback
([#8963](https://github.com/open-telemetry/opentelemetry-java/pull/8963))
* OTLP: Retry OkHttp gRPC exports on the current thread to avoid rejection by bounded executors
([#8965](https://github.com/open-telemetry/opentelemetry-java/pull/8965))
* OTLP: Restore per-attempt retry logging in the OkHttp gRPC sender
([#8967](https://github.com/open-telemetry/opentelemetry-java/pull/8967))
* OTLP: Correct exporter builder Javadoc
([#8996](https://github.com/open-telemetry/opentelemetry-java/pull/8996))
* OTLP: Accept `0` as no limit for maximum request body and message sizes
([#8945](https://github.com/open-telemetry/opentelemetry-java/pull/8945))
* OTLP: gRPC exporter internal telemetry uses `rpc.status_code` instead of
`rpc.response.status.code` when `InternalTelemetryVersion` is set to `LATEST`
([#9007](https://github.com/open-telemetry/opentelemetry-java/pull/9007))
* Prometheus: Give exemplar `trace_id` and `span_id` precedence over filtered attributes
([#8959](https://github.com/open-telemetry/opentelemetry-java/pull/8959))

#### Extensions

* **BREAKING** Incubator: Change `SamplingIntent.create()` and `getTraceStateUpdater()` from `Function` to `BiFunction` accepting the final `SamplingDecision`, and fix consistent sampling corner cases
([#8952](https://github.com/open-telemetry/opentelemetry-java/pull/8952))
* Autoconfigure: Match environment variables for configuration keys containing underscores
([#8933](https://github.com/open-telemetry/opentelemetry-java/pull/8933), [#8951](https://github.com/open-telemetry/opentelemetry-java/pull/8951))
* Autoconfigure: Support `PeriodicMetricReader` batch sizes through `otel.metric.export.max.batch.size`
([#8935](https://github.com/open-telemetry/opentelemetry-java/pull/8935))
* Autoconfigure: Correct SPI Javadoc
([#8900](https://github.com/open-telemetry/opentelemetry-java/pull/8900))

#### Testing

* Add fluent metric point assertions to `MetricAssert`
([#8994](https://github.com/open-telemetry/opentelemetry-java/pull/8994))
* Add a builder supporting aggregation temporality selectors to `InMemoryMetricExporter`
([#8993](https://github.com/open-telemetry/opentelemetry-java/pull/8993))

## Version 1.67.0 (2026-10-09)

### API
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
*
* <p>This class is not intended for use by application developers. Its API is stable and will not
* be changed or removed in a backwards-incompatible manner.
*
* @since 1.68.0
*/
public final class Base16EncodingUtils {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
*
* <p>This class is not intended for use by application developers. Its API is stable and will not
* be changed or removed in a backwards-incompatible manner.
*
* @since 1.68.0
*/
public final class TemporaryBuffers {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@ public PeriodicMetricReaderBuilder setInterval(Duration interval) {
*
* <p>When {@link #setMaxExportBatchSize(int)} is configured, the timeout applies to each
* individual export(batch) invocation, not the aggregate export cycle.
*
* @since 1.68.0
*/
public PeriodicMetricReaderBuilder setExporterTimeout(long timeout, TimeUnit unit) {
requireNonNull(unit, "unit");
Expand All @@ -80,6 +82,8 @@ public PeriodicMetricReaderBuilder setExporterTimeout(long timeout, TimeUnit uni
*
* <p>When {@link #setMaxExportBatchSize(int)} is configured, the timeout applies to each
* individual export(batch) invocation, not the aggregate export cycle.
*
* @since 1.68.0
*/
public PeriodicMetricReaderBuilder setExporterTimeout(Duration timeout) {
requireNonNull(timeout, "timeout");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,8 @@ public MetricAssert hasDoubleGaugeSatisfying(Consumer<DoubleGaugeAssert> asserti
/**
* Asserts this {@link MetricData} is a double gauge with points matching all of the given
* assertions and no more, in any order.
*
* @since 1.68.0
*/
@SafeVarargs
@SuppressWarnings("varargs")
Expand All @@ -136,6 +138,8 @@ public final MetricAssert hasDoubleGaugePointsSatisfying(
/**
* Asserts this {@link MetricData} is a double gauge with points matching all of the given
* assertions and no more, in any order.
*
* @since 1.68.0
*/
public MetricAssert hasDoubleGaugePointsSatisfying(
Iterable<? extends Consumer<DoublePointAssert>> assertions) {
Expand All @@ -162,6 +166,8 @@ public MetricAssert hasLongGaugeSatisfying(Consumer<LongGaugeAssert> assertion)
/**
* Asserts this {@link MetricData} is a long gauge with points matching all of the given
* assertions and no more, in any order.
*
* @since 1.68.0
*/
@SafeVarargs
@SuppressWarnings("varargs")
Expand All @@ -172,6 +178,8 @@ public final MetricAssert hasLongGaugePointsSatisfying(Consumer<LongPointAssert>
/**
* Asserts this {@link MetricData} is a long gauge with points matching all of the given
* assertions and no more, in any order.
*
* @since 1.68.0
*/
public MetricAssert hasLongGaugePointsSatisfying(
Iterable<? extends Consumer<LongPointAssert>> assertions) {
Expand All @@ -196,6 +204,8 @@ public MetricAssert hasDoubleSumSatisfying(Consumer<DoubleSumAssert> assertion)
/**
* Asserts this {@link MetricData} is a double sum with points matching all of the given
* assertions and no more, in any order.
*
* @since 1.68.0
*/
@SafeVarargs
@SuppressWarnings("varargs")
Expand All @@ -207,6 +217,8 @@ public final MetricAssert hasDoubleSumPointsSatisfying(
/**
* Asserts this {@link MetricData} is a double sum with points matching all of the given
* assertions and no more, in any order.
*
* @since 1.68.0
*/
public MetricAssert hasDoubleSumPointsSatisfying(
Iterable<? extends Consumer<DoublePointAssert>> assertions) {
Expand All @@ -231,6 +243,8 @@ public MetricAssert hasLongSumSatisfying(Consumer<LongSumAssert> assertion) {
/**
* Asserts this {@link MetricData} is a long sum with points matching all of the given assertions
* and no more, in any order.
*
* @since 1.68.0
*/
@SafeVarargs
@SuppressWarnings("varargs")
Expand All @@ -241,6 +255,8 @@ public final MetricAssert hasLongSumPointsSatisfying(Consumer<LongPointAssert>..
/**
* Asserts this {@link MetricData} is a long sum with points matching all of the given assertions
* and no more, in any order.
*
* @since 1.68.0
*/
public MetricAssert hasLongSumPointsSatisfying(
Iterable<? extends Consumer<LongPointAssert>> assertions) {
Expand All @@ -265,6 +281,8 @@ public MetricAssert hasHistogramSatisfying(Consumer<HistogramAssert> assertion)
/**
* Asserts this {@link MetricData} is a histogram with points matching all of the given assertions
* and no more, in any order.
*
* @since 1.68.0
*/
@SafeVarargs
@SuppressWarnings("varargs")
Expand All @@ -276,6 +294,8 @@ public final MetricAssert hasHistogramPointsSatisfying(
/**
* Asserts this {@link MetricData} is a histogram with points matching all of the given assertions
* and no more, in any order.
*
* @since 1.68.0
*/
public MetricAssert hasHistogramPointsSatisfying(
Iterable<? extends Consumer<HistogramPointAssert>> assertions) {
Expand Down Expand Up @@ -306,6 +326,8 @@ public MetricAssert hasExponentialHistogramSatisfying(
/**
* Asserts this {@link MetricData} is an exponential histogram with points matching all of the
* given assertions and no more, in any order.
*
* @since 1.68.0
*/
@SafeVarargs
@SuppressWarnings("varargs")
Expand All @@ -318,6 +340,8 @@ public final MetricAssert hasExponentialHistogramPointsSatisfying(
/**
* Asserts this {@link MetricData} is an exponential histogram with points matching all of the
* given assertions and no more, in any order.
*
* @since 1.68.0
*/
public MetricAssert hasExponentialHistogramPointsSatisfying(
Iterable<? extends Consumer<ExponentialHistogramPointAssert>> assertions) {
Expand All @@ -343,6 +367,8 @@ public MetricAssert hasSummarySatisfying(Consumer<SummaryAssert> assertion) {
/**
* Asserts this {@link MetricData} is a summary with points matching all of the given assertions
* and no more, in any order.
*
* @since 1.68.0
*/
@SafeVarargs
@SuppressWarnings("varargs")
Expand All @@ -353,6 +379,8 @@ public final MetricAssert hasSummaryPointsSatisfying(Consumer<SummaryPointAssert
/**
* Asserts this {@link MetricData} is a summary with points matching all of the given assertions
* and no more, in any order.
*
* @since 1.68.0
*/
public MetricAssert hasSummaryPointsSatisfying(
Iterable<? extends Consumer<SummaryPointAssert>> assertions) {
Expand Down
Loading