github open-telemetry/opentelemetry-java-instrumentation v2.30.0
Version 2.30.0

5 hours ago

This release targets the OpenTelemetry SDK 1.64.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 ExperimentalInstrumentationModule#getModuleGroup(). Built-in invokedynamic modules now share a single InstrumentationModuleClassLoader, and each extension is isolated in its own. (#18859)
  • Remove the deprecated InstrumentationModule.isIndyModule(); whether a module uses invokedynamic is now determined by the agent rather than declared per module. (#19140)
  • Remove deprecated query-related APIs from SqlClientAttributesGetter, CassandraRequest, and Experimental. (#19165)
  • Remove the deprecated Enduser* attribute-capturing APIs from the Spring Security 6.0 library; use the User* replacements instead. (#19168)

🚫 Deprecations

  • Deprecate only the Spring Boot starter ConfigProperties compatibility bean used with experimental declarative configuration, in favor of the new ConfigProvider bean; it will be removed in 3.0. The ConfigProperties bean remains supported for non-declarative configuration. (#19175)
  • Deprecate DeclarativeConfigPropertiesBridge and DeclarativeConfigPropertiesBridgeBuilder. Use DeclarativeConfigProperties directly or DeclarativeConfigBridge instead. Will be removed in 3.0. (#19202)
  • Deprecate ConfigPropertiesBackedConfigProvider in favor of DeclarativeConfigBridge. It will be removed in 2.31.0. (#19220)

🌟 New javaagent instrumentation

  • Add Javaagent instrumentation for HBase client 1.4. (#19087)

🌟 New library instrumentation

  • Add library instrumentation (ThriftTelemetry) for the Apache Thrift 0.13 async server. (#19062)

📈 Enhancements

  • Add async server tracing to the Apache Thrift 0.13 javaagent instrumentation; async server handlers were previously uninstrumented. (#18994)
  • Support database= as an alias for databaseName when extracting db.name from MSSQL JDBC URLs. (#19029)
  • Add batch-operation support to the experimental stable database semantic-convention opt-in (otel.semconv-stability.opt-in=database) across database instrumentations, including batch span names, db.operation.batch.size (including empty batches), and db.query.summary. (#19034, #19037, #19054, #19055, #19056, #19057, #19143, #19147, #19161, #19162, #19164, #19172, #19189, #19199)
  • Add tracing for Lettuce 4.0 reactive commands, including exceptional completion and cancellation. (#19071)
  • Add the experimental Cassandra JMX metrics target system. (#19080)
  • Add experimental JFR-based jvm.thread.virtual.pinned and jvm.thread.virtual.submit_failed metrics for Java 19+ virtual threads; enable with otel.instrumentation.runtime-telemetry.emit-experimental-jfr-metrics=true. (#19092)
  • Capture custom object values passed to PreparedStatement.setObject() in query parameter attributes. (#19093)
  • InstrumentationModule now exposes injectedClassNames() and exposedClassNames() for indy instrumentations, so module authors no longer need ExperimentalInstrumentationModule for those helper-class declarations. (#19142)
  • Add captureTemplate and captureArguments options to the log4j, java-util-logging, and jboss-logmanager logging instrumentations, capturing the log message template and arguments as separate log.body.template / log.body.parameters attributes; logback already supported these options (#15423). (#19154)
  • Add server.address and server.port attributes to Redisson client spans. (#19191)
  • Add server.address and server.port attributes to Lettuce Redis client spans. (#19192)
  • Add server.address and server.port attributes to Rediscala client spans. (#19193)
  • Set server.address on registry-backed Dubbo client spans to the registry address plus the service target (registry://host:port/interface:version:group) and leave server.port unset, gated behind the stable rpc semconv opt-in (otel.semconv-stability.opt-in=rpc); the resolved provider host and port are kept under the default semconv. (#17244, #19285)

🛠️ Bug fixes

  • Fix a spurious duplicate warning when the application logger bridge is installed multiple times during startup. (#19088)
  • Fix MySQL and MariaDB db.connection_string values so IPv6 hosts stay bracketed instead of becoming ambiguous. (#19078)
  • Fix multi-topic Pulsar consumers so the internal background receive no longer creates a spurious extra receive span. (#19095)
  • SpringConfigProperties.getMap() no longer evaluates map property values as SpEL expressions; non-special-cased map properties now parse as comma-delimited key=value pairs via the SDK's DefaultConfigProperties, so settings like otel.instrumentation.common.peer-service-mapping work without SpEL syntax. (#19113)
  • Fix JMS destination extraction so an unreadable destination now leaves messaging.destination.name unset instead of reporting it as unknown. (#19115)
  • Fix the JMX Metric Insight jvm.class.loaded and jvm.class.unloaded metrics to use counter instruments. (#19141)

🙇 Thank you

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

@alokmajumder
@bhuvan-somisetty
@breedx-splk
@carlosalberto
@CodingFabian
@FrankSpitulski
@heyams
@hwxy233
@imavroukakis
@inssein
@ishg
@jaydeluca
@jkoronaAtCisco
@johnbley
@JonasKunz
@laurit
@maryliag
@maxxedev
@mmanciop
@opentelemetry-pr-dashboard
@opentelemetrybot
@pavolloffay
@philsttr
@robsunday
@ryanrupp
@steverao
@SylvainJuge
@trask
@tsawada
@xiangtianyu
@YaoYingLong
@zeitlinger

Don't miss a new opentelemetry-java-instrumentation release

NewReleases is sending notifications on new releases.