Skip to content

Releases: open-telemetry/opentelemetry-java

Version 1.64.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 19:30
fd4d976

API

  • Fix W3CBaggagePropagator to allow empty baggage values per W3C spec (#8468)
  • Fix baggage parsing for invalid percent-encoded members (#8480)

Incubating

  • BREAKING Remove deprecated InstrumentationConfigUtil.peerServiceMapping (#8542)
  • Fix EnvironmentGetter/EnvironmentSetter to not enumerate or normalize carrier entries, and normalize empty names consistently (#8474, #8481)

SDK

Traces

  • Add BatchSpanProcessor.create(SpanExporter) convenience factory to mirror SimpleSpanProcessor.create(SpanExporter) (#8564)
  • Fix BatchSpanProcessor benchmark aux counters (exportedSpans/droppedSpans) always reporting zero (#8539)

Metrics

  • Fix PooledHashMap dropping live entries when an entry is removed during forEach (#8499)
  • Safely initialize exemplar reservoir storage in FixedSizeExemplarReservoir (#8524)
  • Use failExceptionally in PeriodicMetricReader when the exporter is busy (#8525)
  • Only set valuesRecorded in AggregatorHandle when false (#8559)
  • Use volatile instead of atomics in Double/LongLastValueAggregator (#8560)
  • Randomize per-thread recording order in metric benchmarks to avoid concurrency hotspots (#8550)

Logs

  • Fix BatchLogRecordProcessor worker thread being killed by non-runtime exceptions (#8529)

Exporters

  • BREAKING Prometheus: Drop deprecated PrometheusMetricReader constructors (#8541)
  • OTLP: Reject host-less endpoints in EndpointUtil.validateEndpoint (#8489)
  • OTLP: Replace Jackson OTLP JSON serialization with a hand-rolled implementation (#8545)
  • OTLP Profiles: Fix OtlpGrpcProfileExporter toString class name (#8492)
  • Prometheus: Add translation strategy support (#8346)
  • Prometheus: Fix serialization of array-valued scope and resource attributes to JSON strings (#8497)

Extensions

  • BREAKING Declarative config: Move experimental types to internal package (#8530)
  • Declarative config: Commit generated schema POJOs to git (#8408)
  • Declarative config: Update to opentelemetry-configuration v1.1.0 (#8451)
  • Declarative config: Adjust POJO toString/hashCode/equals to match AutoValue semantics (#8526)
  • Declarative config: Add ref descriptions to generated model classes (#8540)
  • Declarative config: Emit consistent @JsonProperty annotations on generated models (#8563)
  • Declarative config: Remove duplicate resolver in DeclarativeConfigPropertyUtil (#8579)

Project tooling

  • Add configuration policy guidance (#8429)
  • Exclude certain GitHub Actions from running on forks (#8466)
  • Add guidance to prefer parameterized tests (#8469)
  • Make benchmark path configurable (#8557)

🙇 Thank you

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

@abdessattar23
@ADITYA-CODE-SOURCE
@atoulme
@breedx-splk
@brunobat
@carlosalberto
@dahyvuun
@Develop-KIM
@EvgeniiR
@gfelbing
@jack-berg
@jaydeluca
@jimbobbennett
@jkwatson
@Kielek
@kropptrevor
@opentelemetry-pr-dashboard
@pellared
@psx95
@seongjun-rpls
@thswlsqls
@trask
@Vcode2407
@vivekp14
@zeitlinger

Version 1.63.0

Choose a tag to compare

@github-actions github-actions released this 05 Jun 14:43
485976a

API

  • Add missing setAttribute shortcuts to Span and LogRecordBuilder (#8255)
  • Promote InstrumentationUtil to public class in io.opentelemetry.api.impl package (#8413)
  • Fix index-out-of-bounds in StrictContextStorage (#8294)

Incubating

  • BREAKING Remove deprecated ExtendedAttributes and related code (#8395)

SDK

Metrics

  • Collect async exemplars when exemplar filter is always_on (#8363)
  • Move delta record/collect coordination from instrument to series level (#8313)

Exporters

  • Add noop() factory method to SpanExporter and LogRecordExporter (#8435)
  • BREAKING OTLP: Remove support for deprecated GrpcSenderProvider and HttpSenderProvider SPI property names (use io.opentelemetry.sdk.common.export.GrpcSenderProvider / io.opentelemetry.sdk.common.export.HttpSenderProvider instead) (#8392)
  • OTLP: Bound OkHttp sender dispatchers and surface rejections (#8422)
  • Prometheus: Limit exemplar label characters to conform to Prometheus limits (#8362)
  • Logging: Fix LoggingSpanExporter.flush() to preserve flush failures (#8361)
  • Zipkin: Make exporter self-contained by removing shared internal code dependencies (#8413)

Extensions

  • BREAKING Autoconfigure: Remove deprecated otel.experimental.config.file property (#8393)
  • BREAKING Incubator: Remove deprecated ViewConfig/ViewConfigCustomizer view file config mechanism (#8394)
  • Declarative config: Fix model package (#8403)
  • Declarative config: Fix Java module name to io.opentelemetry.sdk.autoconfigure.declarativeconfig (#8452)

Shims

  • Deprecate OpenTracing shim public API (#8373)

Project tooling

  • Finish adding OSGi support across all modules (#8401, #8417)
  • Force io.zipkin.zipkin2:zipkin:3.6.1 to avoid problematic gson version (#8430)

🙇 Thank you

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

@ADITYA-CODE-SOURCE
@anuq
@bogdandrutu
@breedx-splk
@cijothomas
@jack-berg
@jaydeluca
@jkwatson
@khouari1
@kyyril
@laurit
@ps-mir
@psx95
@royteeuwen
@Sandared
@trask
@zeitlinger

Version 1.62.0

Choose a tag to compare

@github-actions github-actions released this 08 May 16:40
d03621f

API

Context

  • Fix GHSA-rcgg-9c38-7xpx: Apply limits to baggage entries for W3CBaggagePropagator, OtTracePropagator, JaegerPropagator
    (#8378)

SDK

Traces

  • Avoid parentContext allocation on span start for the common case (#8332)

Metrics

  • Add setMaxExportBatchSize to PeriodicMetricReaderBuilder (#8296)
  • Fix PeriodicMetricReader shutdown race that could drop the final flush (#8299)

Exporters

  • BREAKING Prometheus: Change default server host from 0.0.0.0 to localhost (#8298)
  • BREAKING Prometheus: Stop converting unit "1" to "ratio" (#8252)
  • OTLP: Fix null input handling in StringEncoder (#8312)
  • OTLP: Align proto field types and wire tag names in marshalers (#8293)
  • OTLP: Fix MarshalerUtil sizeRepeatedString calculation (#8284)
  • OTLP: Bound JdkHttpSender thread pool size to prevent unbounded thread creation (#8276)
  • OTLP Profiles: Split profiles data model into separate sdk-profiles and JFR shim modules (#8207)
  • OTLP Profiles: Publish alpha release of opentelemetry-sdk-profiles and opentelemetry-exporter-otlp-profiles (#8351)

Extensions

  • BREAKING Declarative config: Extract to new opentelemetry-sdk-extension-declarative-config artifact with new package io.opentelemetry.sdk.autoconfigure.declarativeconfig (#8265)
  • Autoconfigure: Add file size validation in OtlpConfigUtil to avoid unsafe cast to int (#8287)
  • Declarative config: Fix collection fields to not be initialized to empty by default (#8356)
  • Incubator: Add EventToSpanEventBridge to bridge log-based events to span events (#8372)

Testing

  • Add @Nullable to equalTo value argument in OpenTelemetryAssertions (#8301)
  • Add hasValueSatisfying to LongPointAssert and DoublePointAssert for fuzzy value matching (#8328)
  • Add containsPointsSatisfying to metric data asserts for "each given assertion must be satisfied by at least one point, extras allowed" checks on sum, gauge, histogram, exponential histogram, and summary data (#8329)

Project tooling

  • Add initial OSGi support (#7964)
  • Promote ApiUsageLogger to opentelemetry-common public API (#8318)
  • Establish exception logging guidelines and fix inconsistent patterns across exporters and SDK (#8231)
  • Add *.impl.* package naming convention for internal code with japicmp compatibility (#8325)
  • Add Sonatype dependency audit to build (#8365)

🙇 Thank you

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

@abdessattar23
@anuq
@breedx-splk
@cijothomas
@dashpole
@jack-berg
@jaydeluca
@jhalliday
@jkwatson
@jsuereth
@laeubi
@laurit
@maxiking203
@opentelemetrybot
@psx95
@robsunday
@royteeuwen
@Sandared
@stbischof
@SylvainJuge
@trask
@utafrali
@VamshikrishnaMonagari
@zeitlinger

Version 1.61.0

Choose a tag to compare

@github-actions github-actions released this 10 Apr 21:40
339e938

API

  • Stabilize isEnabled() on Tracer, Logger, and metric instruments (#8200)

Incubating

  • BREAKING Update EnvironmentGetter and EnvironmentSetter key normalization to reflect spec changes (#8233)

SDK

Traces

  • Retain propagated context when generating random trace IDs (#8263)
  • Add rate-limited warning log when BatchSpanProcessor drops spans (#8167)

Metrics

  • Track series start time per aggregator rather than at SdkMeterProvider creation time (#8180)
  • Capture context class loader during async callback registration (#8091)
  • Make include/exclude work correctly with empty (but non-null) lists (#8185)

Logs

  • Fix condition for recording successful log processing metrics (#8226)

Exporters

  • OTLP: add configurable bounds to response body reading (#8224, #8277)
  • OTLP: only throw invalid response exception when gRPC response size < 5 bytes (#8194)
  • OTLP: remove duplicate FINEST-level error logging in gRPC exporter (#8216)
  • OTLP Profiles: clean up profile signal exporters for consistency (#8172)

Extensions

  • BREAKING Autoconfigure: remove deprecated ComponentLoader class (use io.opentelemetry.common.ComponentLoader instead) (#8243)
  • Declarative config: fix DeclarativeConfigProperties javadoc to not throw exceptions (#8079)
  • Declarative config: resource attribute filtering should include attributes by default (#8177)
  • Declarative config: enforce IncludedExcludeModel .included and .excluded are not empty (#8266)
  • Autoconfigure: restructure SDK incubator to not depend on autoconfigure internals (#8242)

Project tooling

  • Disable Gradle build cache on releases to mitigate supply chain risk (#8254)

🙇 Thank you

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

@adp2201
@anuraaga
@arun-annamalai
@bhagirath00
@breedx-splk
@brunobat
@cleverchuk
@dashpole
@eamonn-kearns-ibm
@filipetrovic
@jack-berg
@jackshirazi
@jaydeluca
@jhalliday
@jkwatson
@laurit
@martincostello
@maryliag
@MikeGoldsmith
@opensourcevk
@pellared
@robsunday
@SylvainJuge
@trask
@TruongNguyen1305
@Tusharika725
@VamshikrishnaMonagari
@zeitlinger

Version 1.60.1

Choose a tag to compare

@github-actions github-actions released this 08 Mar 00:46
b1273b5

This is a patch release on the previous 1.60.0 release, fixing the issue(s) below.

SDK

Extensions

  • Autoconfigure: fix warning always emitted (#8157)

Version 1.60.0

Choose a tag to compare

@github-actions github-actions released this 06 Mar 21:25
58a5590

API

  • Support W3C trace context random flag (#8012)
  • Clarify that SpanBuilder.setAttribute allows null values (#8072)

Incubating

  • Implement environment variable context propagation carriers (#8074)
  • Deprecate ExtendedAttributes, ExtendedAttributeKey, ExtendedAttributeType, ExtendedAttributesBuilder (#8060)
  • Deprecate peerServiceMapping accessor from InstrumentationConfigUtil (#8088)

SDK

Traces

  • Disable warning when using TraceIdRatioBasedSampler as root sampler (#8065)
  • User-supplied attributes take precedence over exception-derived attributes (#7993)
  • Exclude META-INF/maven from traces SDK shaded dependencies (#8096)
  • Fix inverted condition in LegacySpanProcessorInstrumentation#finishSpans (#8145)

Metrics

  • Split out cumulative vs. delta storage (#8015)
  • Add metrics for PeriodicMetricReader (#8038)
  • Allow configuring min/max in histograms (#8095)
  • Remove deprecated otel.experimental.metrics.cardinality.limit property (#8124)
  • BREAKING bug fix: GlobUtil and IncludePatternMatching, used in views and declarative config matching, previously were inconsistent in case sensitivity. If a glob char (* or ?) was present, it was evaluated with case sensitivity. If no glob chars were present, it was evaluated with case insensitivity. Now, all are consistently evaluated with case sensitivity. (#8152)

Logs

  • Stabilize LogRecordBuilder.setException (#8089)
  • Clarify setTimestamp javadoc for event timestamp behavior (#8104)

Exporters

  • OTLP: Fix marshaling for empty string attributes (#8014)
  • Prometheus: Update Prometheus client to 1.5.0 (#8080)
  • OTLP: Serialize exponential histogram sum as optional double (#8107)
  • OTLP: Use KeyManagerFactory.getDefaultAlgorithm() in TlsUtil.keyManager() (#8122)
  • OTLP: Ensure proto serializer idCache is cleared when exception is thrown (#8147)

Extensions

  • Autoconfigure: Decode plus sign in resource attributes (#8059)
  • Declarative config: update to 1.0 schema (#8123)
  • Declarative config: add support for setting schema URL (#8028)
  • Declarative config: add version mismatch warning (#8069)
  • Declarative config: cache component providers in DeclarativeConfigContext (#8070)
  • Declarative config: add system property substitution (#8073)
  • Declarative config: add exporter customizers (#8081)
  • Declarative config: add support for setting internal telemetry version (#8045)
  • Deprecate View File Configuration mechanism (#8133)
  • Autoconfigure: add property to allow autoconfiguration of SDK telemetry version (#8037)
  • Jaeger remote sampler: refactor to leverage senders (#8046)
  • Declarative config: document ObjectMapper config (#8075)
  • Declarative config: Remove unchecked warning (#8090)

Project tooling

  • Add architecture test to detect usage of shared internal code (#6978)
  • Replace Xlint deprecation check with custom error-prone check (#8061)
  • Enable error-prone's UnnecessarilyFullyQualified check (#8078)
  • Small refactoring to make safety clearer (#8083)
  • Rework span record benchmark and publish results (#8031)
  • Add LogRecordBenchmark (#8106, #8117)

🙇 Thank you

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

@adrielp
@andrzejressel
@antonio-mazzini
@anuraaga
@arnav-dasgupta
@bhagirath00
@blakeli0
@breedx-splk
@carlosalberto
@dashpole
@GerardoGR
@jack-berg
@jaydeluca
@jkwatson
@jmacd
@laurit
@lbarrios
@marcingrzejszczak
@MikeGoldsmith
@mosesn
@PeterF778
@Quaffel
@ruturajjadhav07
@trask
@wglad
@zeitlinger

Version 1.59.0

Choose a tag to compare

@github-actions github-actions released this 06 Feb 14:30
d01a599

API

  • Stabilize complex attributes (#7973)
  • Limit init valid hex array to range that can be true (#7809)

Extensions

  • Trace propagators: Deprecate OtTracePropagator (#8020)
  • Trace propagators: Deprecate JaegerPropagator (#8019)

SDK

  • Move io.opentelemetry.sdk.internal to io.opentelemetry.sdk.common.internal (#8003)
  • Always return ExtendedOpenTelemetry when incubator is available (#7991)

Traces

  • Fix memory leak in SdkSpan#spanEndingThread (#7984)

Metrics

  • Rework and publish metric benchmarks (#8000)
  • Update LongLastValueAggregator algo to avoid allocations (#8017)

Testing

  • Fix OTel JUnit5 Extension cleanup when using Nested test classes (#7999)
  • Add assertion support for Span hasException(null) (#8033)

Exporters

  • DEPRECATION: opentelemetry-exporter-zipkin is now deprecated with the last release planned for 1.65.0 (August 2026) (#7974)
  • Refactor http, grpc senders and promote to public API (#7782)

Extensions

  • Jaeger remote sampler: Remove unused code (#7970)
  • Incubator: Add AlwaysRecordSampler (#7877)

Project tooling

  • Align generate release contributors (#8023)

🙇 Thank you

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

@austince
@baolongnt
@blueswhisper
@bogdandrutu
@breedx-splk
@brunobat
@gerolf-da
@jack-berg
@jaydeluca
@jkwatson
@laurit
@majanjua-amzn
@michaeljohnalbers
@ps-mir
@trask
@tylerbenson
@zeitlinger

Version 1.58.0

Choose a tag to compare

@github-actions github-actions released this 09 Jan 18:14
1e377b4

API

Incubator

  • Delete GlobalConfigProvider in favor of access via ExtendedOpenTelemetry (#7914)
  • Add DeclarativeConfigProperties#get method (#7923)
  • Update ConfigProvider#getInstrumentationConfig response to be non-null (#7954)
  • Add declarative config utility methods for common operations (#7927)

SDK

Traces

  • Implement SDK metrics for trace (#7895, #7930)
  • Emit warning when TraceIdRatioBasedSampler is used as child sampler (#7937)

Logs

  • Implement SDK metrics for logs (#7931)

Exporters

  • Prom exporter update (#7934)

Extensions

  • Declarative config: update to opentelemetry-configuration 1.0.0-rc.3 (#7861)
  • Declarative config: update jaeger remote sampler to require endpoint, initial_sampler (#7943)
  • Declarative config: add support for view unit (#7942)
  • Declarative config: add support for new logger config minimum_severity and trace_based properties (#7940)
  • Declarative config: add support for composable parent threshold sampler (#7941)
  • Declarative config: improve pattern for validating and loading SDK extension plugins (#7947)

Project tooling

  • Use develocity build cache in PRs and local builds (#7906)
  • Configure japicmp classpath to avoid false positives (#7945)

🙇 Thank you

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

@anuraaga
@breedx-splk
@Gosling-dude
@jack-berg
@jkwatson
@JonasKunz
@SylvainJuge
@trask
@zeitlinger

Version 1.57.0

Choose a tag to compare

@github-actions github-actions released this 05 Dec 21:33
2c5a4f8

API

  • Add GlobalOpenTelemetry#getOrNoop, #isSet. Update #get to always returns obfuscated instance (#7819)

Incubating

  • Logs: Complex attributes incubating implementation (#7814)

SDK

Logs

  • Add minimum severity and trace-based logger configuration (incubating API) (#7529)

Exporters

  • OTLP: VarHandle string encoder (#7701)
  • OTLP: Fix OkHttpGrpcSender to properly await executor shutdown (#7840)
  • OTLP: avoid auto-config warning (#7881)
  • OTLP: update error message for missing GrpcSenderProvider dependency (#7884)

Extensions

  • Declarative config: add runtime hints for graal VM (#7866)
  • Declarative config: add missing warning about discarded value (#7821)

Project tooling

  • Update macos version to latest and switch to corretto for testing (#7841)
  • Sync Java worflows: Allow re-running prepare release branch workflow (#7845)
  • Simplify and standardize renovate custom managers across Java repos (#7846)
  • Remove misspell workflow (#7852)
  • Fix link checks on main (#7867)
  • Add zeitlinger as approver (#7868)
  • Move snapshot publishing to daily build (#7886)

🙇 Thank you

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

@breedx-splk
@HarshMehta112
@jack-berg
@jaydeluca
@jeanbisutti
@jkwatson
@kevinburkesegment
@laurit
@michaldo
@trask
@zeitlinger

Version 1.56.0

Choose a tag to compare

@github-actions github-actions released this 07 Nov 21:36
daa49ee

API

Incubator

  • Support ExtendedOpenTelemetry in GlobalOpenTelemetry (#7799)

SDK

  • Changes to MeterConfig, LoggerConfig, TracerConfig are guaranteed to be eventually visible (#7706)

Metrics

  • Stabilize ExemplarFilter (#7768)
  • Type specific exemplar reservoirs (#7758)

Extensions

  • SDK incubator: Add incubator ComposableRuleBasedSampler (#7787)
  • SDK incubator: Add incubator ComposableAnnotatingSampler (#7804)
  • SDK incubator: Rename ComposableTraceIdRatioBased to ComposableProbability (#7786)
  • Declarative config: BREAKING Remove component provider generic type (#7606)
  • Declarative config: Add declarative config support for ExemplarFilter (#7769)
  • Declarative config: Fix a few declarative configuration bugs (#7807)

Project tooling

  • Move to oracle bare metal benchmark runner (#7740)
  • Enable Develocity build scans (#7776)
  • Document GPG signing key (#7783)
  • Update build to use java 21 (#7784)
  • Sync repository-settings.md documentation (#7791)
  • Fix gradle deprecation warning (#7780)
  • Small alignments of workflows across the 6 Java repos (#7806)
  • Implement min java version gradle tooling from instrumentation repo (#7801)

🙇 Thank you

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

@anuraaga
@breedx-splk
@brunobat
@jack-berg
@jkwatson
@laurit
@robsunday
@ThomasVitale
@trask
@yogurtearl
@zeitlinger