opentelemetry-java-instrumentation v2.31.0
opentelemetry-java-instrumentation v2.31.0
This release targets the OpenTelemetry SDK 1.65.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they will continue to have breaking changes. Please see VERSIONING.md for more details.
⚠️ Breaking changes to non-stable APIs
- Remove the deprecated
ConfigPropertiesBackedConfigProviderand itscreate(ConfigProperties)compatibility API from the declarative config bridge. (#19305) - Stop exposing
opentelemetry-instrumentation-api-incubatoron library instrumentation compile classpaths. (#19612)
🚫 Deprecations
- Deprecate
otel.instrumentation.experimental.span-suppression-strategyin favor ofExperimental.setSpanSuppressionStrategy(...). (#19180) - Deprecate
HostIdResource.REGISTRY_QUERYin favor of the absolute-pathreg.exelookup used byHostIdResource. (#19293) - Deprecate
MessageOperationin favor ofMessagingOperationType, and theMessageOperationoverloads ofMessagingAttributesExtractor,MessagingConsumerMetrics,MessagingProducerMetrics,MessagingSpanKindExtractor, andMessagingSpanNameExtractorin favor of the correspondingMessagingOperationTypeAPIs. (#19357) - Deprecate
otel.traces.exporter=zipkinin favor ofotel.traces.exporter=otlp, andotel.exporter.zipkin.endpointin favor ofotel.exporter.otlp.traces.endpoint. (#19400) - Deprecate
OpenTelemetryMeterRegistryBuilder#setMicrometerHistogramGaugesEnabled(boolean)in favor ofExperimental#setMicrometerHistogramGaugesEnabled(OpenTelemetryMeterRegistryBuilder, boolean). (#19404) - Deprecate legacy gRPC metadata, messaging header, and servlet request-parameter capture properties and APIs in favor of selector-based
.included/.excludedconfiguration andIncludeExcludeAPIs. (#19494, #19522, #19523, #19638) - Deprecate
otel.instrumentation.runtime-telemetry.experimental.prefer-jfrin favor ofotel.instrumentation.runtime-telemetry.experimental.jfr-metrics.included, andsetPreferJfrMetrics(...)in favor ofsetJfrMetrics(RuntimeTelemetryBuilder, IncludeExclude). (#19495) - Deprecate boolean and capture-list configuration for MDC/context data, map messages, key-value pairs, logger context, Logstash markers, and structured arguments in favor of
.included/.excludedselectors andIncludeExcludeAPIs. (#19519, #19520, #19521, #19599, #19600, #19605, #19609, #19610) - Deprecate the declarative configuration field
general.semconv_stability.opt_inin favor ofgeneral.stability_opt_in_list, andgeneral.sanitization.url.sensitive_query_parameters/developmentin favor ofgeneral.sanitization.url.sensitive_query_parameters. (#19561) - Deprecate
otel.instrumentation.graphql.add-operation-name-to-span-name.enabledin favor ofotel.instrumentation.graphql.operation-name-in-span-name.enabled, andotel.instrumentation.runtime-telemetry.package-emitter.enabled/jars-per-secondin favor ofotel.instrumentation.runtime-telemetry.experimental.package-emitter.enabled/jars-per-second. (#19573) - Deprecate captured request and response header builder methods across HTTP library instrumentations in favor of selector-based
requestHeaders(IncludeExclude)andresponseHeaders(IncludeExclude)APIs. (#19598, #19601, #19602, #19603, #19604, #19606, #19607, #19608) - Deprecate
otel.instrumentation.micrometer.histogram-gauges.enabledin favor ofotel.instrumentation.micrometer.experimental.histogram-gauges.enabled. (#19613)
🌟 New javaagent instrumentation
- Add Apache Commons Pool 2 instrumentation for object pool metrics. (#19091)
- Add Apache HBase client 1.0 javaagent instrumentation. (#19243)
- Add Redisson connection pool metrics for 3.26+. (#19392)
- Add support for OpenTelemetry API 1.65 incubator metrics in the Java agent. (#19456)
- Add Tomcat DBCP 8.0 javaagent instrumentation for database pool metrics. (#19472)
📈 Enhancements
- Add opt-in OSGi bundle metadata for selected instrumentation, API, and SDK extension artifacts so they can be consumed directly in OSGi runtimes. (#18995)
- Add
cassandra.compaction.progress.completedandcassandra.compaction.progress.sizegauges for in-flight Cassandra compactions. (#19290) - Preview the upcoming 3.0 messaging semantic conventions behind
otel.semconv-stability.opt-in=messagingacross AWS SQS and Lambda, JMS, Kafka, NATS, Pulsar, RabbitMQ, RocketMQ, Spring Integration, and Spring messaging instrumentations. (#19347, #19348, #19349, #19350, #19351, #19353, #19354, #19355, #19356, #19476, #19477, #19478, #19479, #19480, #19481, #19482, #19486, #19487, #19499, #19500, #19504, #19505, #19507, #19508, #19535, #19544, #19565, #19567, #19639, #19640) - Under the upcoming 3.0 RPC semantic conventions behind
otel.semconv-stability.opt-in=rpc, Dubbo requests to unknown services emit server spans even when decoding fails beforeDubboProtocol.getInvoker(), and record the original method inrpc.method_original. (#16668) - Log4j context data now includes
baggage.*entries even when there is no current span. (#19378) - When
otel.instrumentation.common.v3-preview=true, the Micrometer bridge no longer exports.maxgauges forTimerandDistributionSummary. (#19397) - Add the
IncludeExcludeselector API toopentelemetry-instrumentation-apifor matching strings against included and excluded glob patterns. (#19451) - Emit Cassandra driver 3 consistency, coordinator, page size, idempotence, and speculative execution attributes. (#19629)
- Expand the upcoming 3.0 database semantic conventions behind
otel.semconv-stability.opt-in=database, including operation names, namespaces, collection names, operation parameters, batch telemetry, and error types for Couchbase, Redis clients, Elasticsearch, R2DBC, JDBC, ClickHouse, MongoDB, and HBase. (#19616, #19623, #19664, #19665, #19668, #19670, #19704, #19705, #19706, #19707, #19708) - Add
otel.instrumentation.influxdb.query-sanitization.enabledto control InfluxDB query sanitization, taking precedence overotel.instrumentation.common.db.query-sanitization.enabled. (#19703)
🛠️ Bug fixes
- Use stable database-derived metric names for unnamed Alibaba Druid, c3p0, Tomcat JDBC, HikariCP, and Vibur connection pools. (#19108, #19159, #19173, #19470, #19471)
- Apache DBCP 2.0 metrics now register when the pool starts even without JMX registration, and they unregister on
close(). (#19160) - Skip instrumenting JDK tools launched from
$JAVA_HOME/binunlessotel.javaagent.enabled=trueis set. (#19203) - Fix Jetty JMX metrics to emit
jetty.select.countinstead ofjetty.io.select.countfor select-call counts. (#19249) - Fix Redisson connection pool permits leaking when a waiting async command is cancelled. (#19340)
- Fix Spring WebFlux route detection so controller spans keep a readable route name on JDK 21+. (#19365)
- Normalize IPv6 JDBC
server.addressvalues to bare addresses instead of bracketed literals. (#19366) - Fix Lettuce 5.1 instrumentation with indy by injecting
io.lettuce.core.protocol.OtelCommandArgsUtilas a helper class. (#19373) - Add a 2-second timeout to
host.idresource detection so slow lookup commands no longer block SDK startup. (#19377) - Fix azure-core instrumentation so applications that do not use the OpenTelemetry API still get Azure SDK tracing. (#19387)
- MySQL JDBC URL parsing now handles hosts, ports, and query parameters in non-standard URL forms more reliably. (#19394)
- Preload
MethodHandle$1during agent startup to avoidClassCircularityErroron JDK 17 that can break invokedynamic call site linking. (#19398) - Redact sensitive data from AWS SigV4 query parameters, AWS Lambda API Gateway and Elasticsearch REST URLs, embedded URL credentials, and process command lines. (#19422, #19424, #19425, #19514)
- Fix Micrometer custom meter naming and prevent metric descriptions from leaking between related instruments or registries. (#19463, #19466, #19467)
- Fix
activemq.destination.temp.utilizationto convert%values to a unitless fraction. (#19512) - Fix
jetty.thread.queue.sizeto use the{job}unit instead of{thread}. (#19513) - Fix Spring Boot Actuator metric endpoints when the OpenTelemetry Micrometer registry is part of a composite registry or cannot return metric values. (#19515, #19541)
- IPv6 addresses in
Hostheaders are now parsed correctly, including bracketed ports. (#19540) - Fix Pulsar receive spans under legacy messaging semantic conventions to evaluate suppression against the extracted producer context when receive telemetry is disabled. (#19592)
- Preserve Dubbo’s
ClusterInvokertype when capturing the consumer registry address. (#19568) - Stop warning about deprecated selector-based capture settings when the corresponding
.includedor.excludedreplacement is also configured. (#19571) - Preserve the configured database name’s original case in legacy
db.nameand stabledb.namespacefor R2DBC spans. (#19615) - Capture spans for explicit prepared queries in Vert.x SQL client so
PreparedStatement.query()execution keeps the correctdb.systemand connection options. (#19619) - Fix Cassandra 3
SimpleStatementsanitization so bound values are detected and hidden indb.statement. (#19620) - Emit exception events and logs for failed JDBC
commitandrollbackoperations. (#19621) - Clear JDBC batch telemetry state after
executeBatch()andexecuteLargeBatch()so subsequent batch spans no longer report stale batch contents. (#19622) - Keep
server.addressandserver.portfor failed Cassandra 3 operations by extracting the coordinator fromCoordinatorException. (#19627) - SQL query text is now sanitized with
db.system.name, so double-quoted identifiers stay intact for databases that treat them as identifiers. (#19632) - Fix AWS Lambda
RequestHandlerinstrumentation sovoid-returninghandleRequestmethods are handled correctly. (#19714)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@amirdeljouyi @amit306 @anuraaga @asarkar @breedx-splk @brunobat @dangzitou @gillesbergerp @iNikem @jack-berg @jackshirazi @jaydeluca @jkoronaAtCisco @johnbley @juszczakn @laurit @lmolkova @malafeev @mateuszrzeszutek @mvanhorn @opentelemetry-pr-dashboard @opentelemetrybot @PapaPiya @philippeLepage @robe-schr-scacap @royteeuwen @safris @Sebmaster @steverao @SylvainJuge @szczeppan @ThomasVitale @trask @tydhot @ViliusS @wl2027 @xiang17 @YaoYingLong @zeitlinger
Source open-telemetry/opentelemetry-java-instrumentation ·
v2.31.0· 2026-08-20 · upstream release
Mirrored verbatim for indexing. All rights belong to the upstream project.
Release notes are published by the upstream project and mirrored here for indexing. All rights belong to their authors.