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 singleInstrumentationModuleClassLoader, 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, andExperimental. (#19165) - Remove the deprecated
Enduser*attribute-capturing APIs from the Spring Security 6.0 library; use theUser*replacements instead. (#19168)
🚫 Deprecations
- Deprecate only the Spring Boot starter
ConfigPropertiescompatibility bean used with experimental declarative configuration, in favor of the newConfigProviderbean; it will be removed in 3.0. TheConfigPropertiesbean remains supported for non-declarative configuration. (#19175) - Deprecate
DeclarativeConfigPropertiesBridgeandDeclarativeConfigPropertiesBridgeBuilder. UseDeclarativeConfigPropertiesdirectly orDeclarativeConfigBridgeinstead. Will be removed in 3.0. (#19202) - Deprecate
ConfigPropertiesBackedConfigProviderin favor ofDeclarativeConfigBridge. 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 fordatabaseNamewhen extractingdb.namefrom 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), anddb.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.pinnedandjvm.thread.virtual.submit_failedmetrics for Java 19+ virtual threads; enable withotel.instrumentation.runtime-telemetry.emit-experimental-jfr-metrics=true. (#19092) - Capture custom object values passed to
PreparedStatement.setObject()in query parameter attributes. (#19093) InstrumentationModulenow exposesinjectedClassNames()andexposedClassNames()for indy instrumentations, so module authors no longer needExperimentalInstrumentationModulefor those helper-class declarations. (#19142)- Add
captureTemplateandcaptureArgumentsoptions to the log4j, java-util-logging, and jboss-logmanager logging instrumentations, capturing the log message template and arguments as separatelog.body.template/log.body.parametersattributes; logback already supported these options (#15423). (#19154) - Add
server.addressandserver.portattributes to Redisson client spans. (#19191) - Add
server.addressandserver.portattributes to Lettuce Redis client spans. (#19192) - Add
server.addressandserver.portattributes to Rediscala client spans. (#19193) - Set
server.addresson registry-backed Dubbo client spans to the registry address plus the service target (registry://host:port/interface:version:group) and leaveserver.portunset, 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_stringvalues 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-delimitedkey=valuepairs via the SDK'sDefaultConfigProperties, so settings likeotel.instrumentation.common.peer-service-mappingwork without SpEL syntax. (#19113)- Fix JMS destination extraction so an unreadable destination now leaves
messaging.destination.nameunset instead of reporting it asunknown. (#19115) - Fix the JMX Metric Insight
jvm.class.loadedandjvm.class.unloadedmetrics 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