Skip to content

Releases: open-telemetry/opentelemetry-java-instrumentation

Version 2.30.0

Choose a tag to compare

@github-actionsgithub-actions released this 22 Jul 02:19
080c1d3

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

Version 2.29.0

Choose a tag to compare

@github-actionsgithub-actions released this 19 Jun 02:38
c215cb4

This release targets the OpenTelemetry SDK 1.63.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

  • Change the return type for JmxTelemetry.start(...) APIs. (#18782)
  • Experimental runtime package telemetry now emits package.checksum_algorithm=SHA-256 and 64-character package.checksum values instead of SHA1 checksums. (#18846)

🚫 Deprecations

  • Rename the common logging context keys to otel.instrumentation.common.logging.trace-id-key, otel.instrumentation.common.logging.span-id-key, and otel.instrumentation.common.logging.trace-flags-key, while keeping the old property names deprecated. (#18851)
  • Rename the kafka-broker and kafka-connect JMX target systems to experimental-kafka-broker and experimental-kafka-connect; the old names still work for now and log a warning. (#18971)

🌟 New javaagent instrumentation

  • Add SOFARPC 5.4 instrumentation that emits RPC client and server spans and metrics. (#15589)
  • Add Javaagent instrumentation for HBase client 2.0.0 through 2.5.0. (#18253)

📈 Enhancements

  • Add opt-in support for emitting HTTP request exceptions as log signals with otel.semconv.exception.signal.preview=logs. (#16259)
  • Add opentelemetry-api-1.63 Javaagent instrumentation for OpenTelemetry API 1.63 and opentelemetry-api-incubator 1.63. (#18911)
  • Add otel.semconv-stability.v3-preview as a fallback for the declarative v3_preview semconv stability setting. (#18936)
  • Update the experimental stable database semantic-convention opt-in (otel.semconv-stability.opt-in=database) across database instrumentations, including span names and db.* attributes. (#18808, #18853, #18920, #18922, #18926, #18930, #18970, #18979, #18980, #18984, #18985, #18986, #18987, #18989, #18990, #18992, #18993, #19004, #19005)
  • Capture query text and parameterization for Cassandra batch statements. (#18964)
  • Keep opentelemetry-api and opentelemetry-instrumentation-annotations enabled under otel.instrumentation.common.v3-preview even when default-enabled=false. (#18792)
  • When otel.instrumentation.common.v3-preview is enabled, affected instrumentations emit user.* identity attributes instead of enduser.* ones. (#18795)
  • Disable Kafka client metrics by default when otel.instrumentation.common.v3-preview=true. (#18828)
  • Recognize Amazon Aurora DSQL and AWS wrapper JDBC URL prefixes when parsing JDBC connection metadata. (#18831)
  • Set instrumentation versions on emitted Meter scopes. (#18866)
  • Run @WithSpan instrumentation after other instrumentations so other advice can attach attributes to the active span. (#18874)
  • Emit database client failures as db.client.operation.exception logs when otel.semconv.exception.signal.preview is enabled. (#18889)
  • Emit RPC exceptions as log records when otel.semconv.exception.signal.preview=logs is enabled. (#18890)
  • Emit messaging exceptions as log records under otel.semconv.exception.signal.preview. (#18891)
  • Emit faas.invocation.exception log records for FaaS exceptions when otel.semconv.exception.signal.preview=logs is enabled. (#18892)
  • Emit gen_ai.client.operation.exception logs for OpenAI chat and embeddings failures when otel.semconv.exception.signal.preview=logs is enabled. (#18893)
  • Emit AWS SDK request failures as rpc.client.call.exception log records when otel.semconv.exception.signal.preview=logs is enabled. (#18894)
  • Declarative configuration now supports per-domain semantic-convention selection using semconv.version, semconv.experimental, and semconv.dual_emit settings. (#18908)
  • When otel.instrumentation.common.v3-preview is enabled, use otel.semconv-stability.preview instead of otel.semconv-stability.opt-in to opt in to the nonstable service.peer and rpc semantic conventions. (#18914)
  • Disable Kotlin coroutines @WithSpan instrumentation by default when otel.instrumentation.common.v3-preview=true. (#18919)
  • Use the summary-aware path in SqlQueryAnalyzer.analyze() when otel.instrumentation.common.v3-preview is enabled. (#18921)
  • When otel.instrumentation.common.v3-preview is enabled, deprecated JDBC/db sanitization config names are ignored in favor of db.query_sanitization.enabled. (#18934)
  • Include jvm.gc.cause on GC duration metrics when otel.instrumentation.common.v3-preview is enabled. (#18967)
  • Emit duration metrics for JDBC transaction operations COMMIT and ROLLBACK. (#19003)
  • Use a generated InstrumentationVersion class in OkHttp 3.0 instead of reading embedded version properties, avoiding Android StrictMode disk-read violations. (#19006)
  • Add thread details span attributes for declarative Spring starter configuration when distribution.spring_starter.thread_details_enabled is set. (#19008)

🛠️ Bug fixes

Read more

Version 2.28.1

Choose a tag to compare

@github-actionsgithub-actions released this 20 May 22:52
7ad453a

This release targets the OpenTelemetry SDK 1.62.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.

🛠️ Bug fixes

  • Fix javaagent startup failures when declarative configuration uses bundled contrib components, such as the rule-based routing sampler. (#18813)

Version 2.28.0

Choose a tag to compare

@github-actionsgithub-actions released this 19 May 03:33
9ef68e6

This release targets the OpenTelemetry SDK 1.62.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

  • Removed the obsolete internal ClassInjector/ProxyInjectionBuilder API used by the old ExperimentalInstrumentationModule.injectClasses(ClassInjector) path; use ExperimentalInstrumentationModule.exposedClassNames() instead. (#18112)
  • Removed previously deprecated non-stable API methods and the deprecated opentelemetry-runtime-telemetry-java8 and opentelemetry-runtime-telemetry-java17 library aliases. (#18136)
  • Removed the previously deprecated captureEventName library builder setting from the logback-appender-1.0 and log4j-appender-2.17 OpenTelemetryAppender, and the corresponding otel.instrumentation.{logback-appender,log4j-appender,jboss-logmanager}.experimental.capture-event-name javaagent properties. Use the otel.event.name key in MDC / context data / key-value pairs / Logstash markers / structured arguments instead. (#18223)
  • Removed previously deprecated experimental config properties otel.instrumentation.http.client.experimental.redact-query-parameters and otel.instrumentation.common.experimental.db-sqlcommenter.enabled; use otel.instrumentation.sanitization.url.experimental.sensitive-query-parameters and otel.instrumentation.common.db.experimental.sqlcommenter.enabled instead. (#18229)
  • Removed the deprecated otel.instrumentation.servlet.experimental.add-trace-id-request-attribute property; use otel.instrumentation.servlet.experimental.trace-id-request-attribute.enabled instead. (#18237)
  • Reshaped the ktor Experimental helper from a class with a companion object to a top-level object. Kotlin source callers (Experimental.emitExperimentalTelemetry(...)) are unaffected, but pre-compiled consumers must be recompiled against the new artifact. (#18343)

🚫 Deprecations

  • Deprecate otel.instrumentation.jaxws-cxf-3.0.enabled in favor of otel.instrumentation.jaxws-2.0-cxf-3.0.enabled, and otel.instrumentation.jaxws-metro-2.2.enabled in favor of otel.instrumentation.jaxws-2.0-metro-2.2.enabled. (#18184)

🌟 New javaagent instrumentation

  • Add Apache Thrift 0.13 instrumentation for RPC client and server spans and metrics. (#18405)

🌟 New library instrumentation

  • Add Apache Thrift 0.13 library instrumentation for RPC client and server spans and metrics. (#18405)

📈 Enhancements

  • Couchbase 3.1 javaagent instrumentation now emits the more conventional instrumentation scope name io.opentelemetry.couchbase-3.1 instead of io.opentelemetry.javaagent.couchbase-3.1 when otel.instrumentation.common.v3-preview is enabled. (#18426)
  • Wicket resource requests now use the resource reference class name in the server span name when otel.instrumentation.common.v3-preview is enabled. (#18312, #18775)
  • Decide whether javaagent helper classes are injected into the application class loader or isolated based on the advice classes used by an instrumentation. (#17815)
  • Improve cgroup v2 container ID detection for Podman by supporting additional mountinfo layouts and warning when multiple candidate IDs are found. (#18272)

🛠️ Bug fixes

  • Fix Pekko HTTP and Tapir server route tracking so server span names and http.route preserve the most specific matched route across nested directives, exceptions, and timeouts; this may change span names and http.route values for affected routes. (#16390)
  • Fix context loss in Finagle HTTP instrumentation across Netty-to-Finagle request conversion and twitter-util Future/Promise asynchronous boundaries. (#17867)
  • Fix virtual-thread pinning caused by weak-map stale-entry cleanup running on virtual threads; cleanup now runs from the background thread instead. (#18113)
  • Avoid linking batch consumer spans to the ambient consumer span when records or messages have no propagation headers. (#18154)
  • Fix resetOnEachOperator() for Reactor 3.1 so it also removes the scheduler hook when instrumentation is disabled. (#18258)
  • End spans when RxJava 1.0 subscriptions throw synchronously. (#18265)
  • Fix Spring Boot service version auto-detection so META-INF/build-info.properties is read from the jar root instead of BOOT-INF/classes/. (#18292)
  • Clear the Netty VirtualField after finishing a response in the Netty 3.8 server instrumentation. (#18358)
  • Fix JarDetails to close JarFile handles while reading archives and embedded jars, preventing resource leaks during runtime telemetry collection. (#18385)
  • Fix a NullPointerException when converting an agent context without an associated application context to an application context. (#18444)
  • Fix Ktor server instrumentation to prevent OpenTelemetry context leaks caused by incomplete coroutine context restoration. (#18456)
  • Fix Vert.x sub-router http.route attributes by prepending the mount point to the relative route path; this may change server span names and http.route values for mounted sub-routes. (#18462)
  • Fix oshi metrics startup and RSS memory reporting with oshi 7.0.0. (#18478)
  • Fix Play MVC and Play WS instrumentation on Play 3.x applications. (#18624)
  • Record an error receive span when a wrapped Kafka consumer poll() fails. (#18625)
  • Fix weak-map cleanup during agent startup by starting WeakConcurrentMapCleaner before Byte Buddy installation. (#18628)
  • Fix indy instrumentation so it works with the security manager without recursive bootstrap failures. (#18634)
  • Avoid a deadlock in weak caches when stale entries are expunged during computeIfAbsent. (#18635)
  • Declarative config customizers now handle missing processor and detector lists without throwing NullPointerException during startup. (#18641)
  • Fix a race that could prevent HTTP server spans from ending correctly in Netty 3.8 and 4.0 instrumentation. (#18645)
  • Avoid NumberFormatException when a JDBC URL port is null. (#18708)
  • Fix Vert.x TaskQueue and OrderedExecutorFactory task execution so span context propagates to queued runnables. (#18709)
  • Limit Redisson batch query text length to avoid oversized db.statement values for large batches. (#18744)
  • Fix SQL query sanitization so password clauses in SAP HANA administrative statements are redacted without redacting password identifiers. (#18754)

🙇 Thank you

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

@anuraaga
@Ari4ka
@asvanberg
@breedx-splk
@Channyboy
@chatgpt-codex-connector
@deejay1
@dengliming
@dmarkwat
@dta...

Read more

Version 2.27.0

Choose a tag to compare

@github-actionsgithub-actions released this 21 Apr 20:17
f1973d4

This release targets the OpenTelemetry SDK 1.61.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

  • Make AbstractKtorServerTelemetryBuilder.isOpenTelemetryInitialized() protected (previously public). (#17509)
  • Replace ExperimentalInstrumentationModule.injectClasses(ClassInjector) with exposedClassNames() for exposing helper classes to the application class loader. (#17765)
  • Moved WebApplicationContextInstrumentation from the spring-web instrumentation module to spring-webmvc; users who disabled it via otel.instrumentation.spring-web.enabled=false must now use otel.instrumentation.spring-webmvc.enabled=false. (#17856)

🚫 Deprecations

  • Deprecated KafkaTelemetryBuilder.setMessagingReceiveInstrumentationEnabled(boolean) in favor of setMessagingReceiveTelemetryEnabled(boolean). (#17092)
  • Deprecated GraphQL builder methods setSanitizeQuery() and setAddOperationNameToSpanName(), and deprecated config key otel.instrumentation.graphql.add-operation-name-to-span-name.enabled in favor of setQuerySanitizationEnabled(), setOperationNameInSpanNameEnabled(), and otel.instrumentation.graphql.operation-name-in-span-name.enabled. (#17093)
  • Deprecate Experimental.setEnableSqlCommenter() in JDBC and R2DBC instrumentation in favor of Experimental.setSqlCommenterEnabled(). (#17094)
  • Rename otel.instrumentation.servlet.capture-request-parameters to otel.instrumentation.servlet.experimental.capture-request-parameters and otel.instrumentation.servlet.add-trace-id-request-attribute to otel.instrumentation.servlet.experimental.trace-id-request-attribute.enabled; old property names are deprecated. (#17113)
  • Deprecated the declarative config name statement_sanitizer in favor of query_sanitization, and the declarative config group common.database in favor of common.db. (#17116)
  • Deprecated the GraphQL declarative config name query_sanitizer in favor of query_sanitization. (#17455)
  • Deprecated the DB query sanitization system property names otel.instrumentation.common.db-statement-sanitizer.enabled, otel.instrumentation.jdbc.statement-sanitizer.enabled, otel.instrumentation.mongo.statement-sanitizer.enabled, and otel.instrumentation.r2dbc.statement-sanitizer.enabled in favor of the corresponding *.query-sanitization.enabled names, deprecated otel.instrumentation.common.experimental.db-sqlcommenter.enabled in favor of otel.instrumentation.common.db.experimental.sqlcommenter.enabled, and deprecated otel.instrumentation.graphql.query-sanitizer.enabled in favor of otel.instrumentation.graphql.query-sanitization.enabled. (#17464)
  • Deprecate InstrumentationModule.isIndyModule(); indy mode is now determined by the agent distribution configuration instead of per-module overrides. (#17713)

📈 Enhancements

  • Remove log4j.map_message. prefix from MapMessage attributes when otel.instrumentation.common.v3-preview is enabled. (#13871)
  • Stop normalizing messaging header names (dash to underscore) when otel.instrumentation.common.v3-preview is enabled, so captured header attribute keys now preserve the original header name. (#14554)
  • Add db.system.name attribute to Vertx SQL client instrumentation when stable database semantic conventions are enabled (otel.semconv-stability.opt-in=database). (#16254)
  • JDBC instrumentation now supports the db.system.name attribute with stable semantic convention values (e.g., postgresql, oracle.db, ibm.db2, sap.hana) when stable database semantic conventions are enabled (otel.semconv-stability.opt-in=database). (#16277)
  • Add otel.instrumentation.common.v3-preview flag that enables upcoming 3.0 breaking changes early. (#16459)
  • Optimized log event MDC attribute mapping in jboss-logmanager, log4j, and logback appenders by pre-computing attribute keys at initialization. (#16765)
  • Add messaging.kafka.bootstrap.servers attribute to Kafka producer spans when otel.instrumentation.kafka.experimental-span-attributes is enabled. (#17065)
  • Disable servlet trace-id request attribute by default when otel.instrumentation.common.v3-preview is enabled. (#17173)
  • Disable thread details span processor (otel.javaagent.add-thread-details) by default when otel.instrumentation.common.v3-preview is enabled. (#17215)
  • Improved javaagent startup optimization by decomposing disjunction matchers, allowing more transformations to be skipped during class loading. (#17227)
  • Add stable messaging.kafka.offset attribute to Kafka instrumentation, gated behind otel.semconv-stability.preview=messaging. (#17785)
  • Preserve original casing of servlet request parameter names in attribute keys when otel.instrumentation.common.v3-preview is enabled. (#17822)
  • Replace reflective mutation of Byte Buddy's AgentBuilder.Default.transformations with a ClassFileTransformer hook, avoiding a JDK 26 JEP 500 warning about writing to a final field via reflection. (#17824)
  • Add javaagent bridging support for OpenTelemetry API 1.61 stable methods including Tracer.isEnabled(), metric instrument isEnabled(), and Logger.setBody(Body). (#17849)

🛠️ Bug fixes

  • Fix WebClientBeanPostProcessor and RestClientBeanPostProcessor to avoid replacing user-customized builder beans when the OpenTelemetry tracing filter/interceptor is already registered. (#15546)
  • Fix memory leak where bridged observable metric callbacks were never closed when the application-side instrument was garbage collected. (#16219)
  • Fix Ktor server instrumentation leaking scope across requests due to restoreThreadContext not always being called by Ktor coroutine machinery. (#16487)
  • Add missing schemaUrl to servlet response instrumenter. (#16560)
  • Fix OpenTelemetryContextDataProvider calling GlobalOpenTelemetry.get() during class initialization, which could interfere with SDK setup ordering. (#16638)
  • Fix ZIO instrumentation destroying caller thread context on fiber suspend, which caused spans created after unsafe.run to lose their parent. (#16647)
  • Fix Spring Boot starter adding a duplicate OpenTelemetry logback appender when the appender is nested inside another appender. (#16697)
  • Fix bridging of VALUE-type attributes set via AttributeKey.valueKey() on spans and log records through the javaagent API bridge. (#16750)
  • Fix unsafe deserialization in RMI instrumentation that could lead to remote code execution (CVE-2026-33701, #16986, also released in 2.26.1)
  • Fix boot loader class injection for httpurlconnection, methods, and rmi instrumentations to use MethodHandles.Lookup instead of unsafe fallback on JDK 23+. (#17050)
  • Fix runtime-telem...
Read more

Version 2.26.1

Choose a tag to compare

@github-actionsgithub-actions released this 23 Mar 17:57
9cf4fba

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

🔒 Security fixes

  • Fix unsafe deserialization in RMI instrumentation that could lead to remote code execution (CVE-2026-33701, #16979)

Version 2.26.0

Choose a tag to compare

@github-actionsgithub-actions released this 14 Mar 20:28
778754b

This release targets the OpenTelemetry SDK 1.60.1.

Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.

⚠️ Breaking changes to non-stable APIs

  • Remove deprecated AWS Lambda v2.2 wrappers and forceFlush(int, TimeUnit) overload (#16170)
  • Remove deprecated HTTP client/server methods (#16167)
  • Remove deprecated database instrumentation methods and classes (#16164)
  • Remove deprecated peer-service mapping APIs (#16165)
  • Make runtime-telemetry deprecated classes now internal (#16173)
  • Remove AttributesExtractorUtil (#16152)
  • Remove marker interface from SqlClientAttributesGetter (#16205)
  • Merge network/server getter methods into DB attribute getters (#16264, #16268)
  • Rename SQL sanitizer classes to SQL analyzer (#16269)
  • Rename internal common module packages to follow new naming convention (#16284, #16308, #16327, #16341, #16373)

🚫 Deprecations

  • Deprecated individual runtime-telemetry module classes in favor of unified module (#16087)
  • Deprecated old HTTP server query parameter methods in favor of sensitive query param handling (#16097)
  • Deprecated old RPC attributes getter methods in favor of new ones supporting stable semantic conventions (#16130)
  • Deprecated old ClickHouse instrumentation methods as part of simplification (#16206)
  • Deprecated old R2DBC methods in favor of ones supporting db.system.name (#16251)
  • Deprecated old DbClientAttributesGetter methods; added getErrorType() with implementations (#16276)
  • Deprecated old RPC metrics methods in favor of ones supporting stable semantic conventions (#16298)
  • Deprecated old DbClientAttributesGetter methods; added getDbName() to better support old/stable semconv split (#16318)

📈 Enhancements

  • Add server address and port attributes for Spymemcached (#15242)
  • Add Kafka Connect as a built-in JMX metrics target (#15561)
  • Convert Lettuce instrumentation to use Instrumenter (#15838)
  • OpenSearch Java client: capture sanitized search query bodies (#15634)
  • Apply stable semantic conventions to Camel JMX metrics (#16088)
  • Add jvm.file_descriptor.limit metric (#16174)
  • Run gRPC client callbacks with parent context (#16175)
  • SQL summary: handle EXPLAIN statements (#16184)
  • Simplify InfluxDB instrumentation (#16207)
  • Update histogram buckets for db.client.operation.duration (#16222)
  • SQL summary: support Oracle dblink syntax (#16230)
  • Add instrumentation for ZIO HTTP server route (#16232)
  • Remove network attributes under database stable semconv flag (#16257)
  • Support Javalin 7 (#16261)
  • gRPC: initial stable semconv support (#16304)
  • Populate os.version resource attribute (#16311)
  • Camel: don't emit db spans under stable semconv (#16275)
  • Dubbo: stable semconv support (#16352)
  • Update the OpenTelemetry SDK version to 1.60.0 (#16407)
  • Use new stable LogRecordBuilder.setException() (#16423)
  • Configure semconv-stability.opt-in with declarative config API (#16443)
  • Support otel.event.name (#16220)

🛠️ Bug fixes

  • SQL sanitizer now treats double-quoted fragments as string literals by default (#15582)
  • Clear recorded exception when request completes (#16138)
  • Clear URL connection state after ending span (#16155)
  • Fix Spring declarative config with environment variable substitution (#15775)
  • Fix Ktor server send pipeline error handling (#16192)
  • Logging appenders: KeyValue attributes should take priority over MDC (#16239)
  • Create new PekkoRouteHolder for each request (#16258)
  • Tomcat JMX: ignore negative thread and session limits (#16355)
  • server.port is required on HTTP client spans (#16388)
  • Fix Ktor server instrumentation resolving peer address (#16392)
  • Fix class cast exception in servlet instrumentation (#16403)
  • Fix empty response body on Jetty HttpClient 9.4.24–9.4.43 (#16406)

🙇 Thank you

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

@aaaugustine29
@Arpan200502
@breedx-splk
@filipl
@fuleow
@hilmarf
@huange7
@imrahul23
@jack-berg
@jaydeluca
@jonasplaum
@laurit
@lmolkova
@lucacavenaghi97
@minwoox
@mznet
@pepeshore
@richard-salac
@robsunday
@samwright
@self-sasi
@steverao
@SylvainJuge
@trask
@zeitlinger

Version 2.25.0

Choose a tag to compare

@github-actionsgithub-actions released this 13 Feb 00:13
399dae9

This release targets the OpenTelemetry SDK 1.59.0.

Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.

⚠️ Breaking changes to non-stable APIs

🚫 Deprecations

  • Deprecated getDelegate(), request(), channel(), remoteAddress() in HTTP client request wrapper classes in favor of getRequest(), getChannel(), getRemoteAddress() for consistency (#15942)
  • Deprecated NettyClientTelemetry.setChannelContext() in favor of setParentContext() (#16010)
  • Deprecated new* methods in favor of create* methods in Armeria and Jetty client instrumentation (e.g., newDecorator()createDecorator(), newHttpClient()createHttpClient()) (#16009)
  • Deprecated NettyServerTelemetry.createResponseHandler() and createCombinedHandler() overloads that expose internal classes (#16011)
  • Deprecated RatpackServerTelemetry.getHandler(), getExecInterceptor(), and getExecInitializer() in favor of createHandler(), createExecInterceptor(), and createExecInitializer() (#16013)
  • Deprecated setPeerService() in HTTP, gRPC, Dubbo, and Armeria instrumentation builders in favor of addAttributesExtractor() (#16059)
  • Deprecated RpcAttributesGetter.getMethod() in favor of getRpcMethod() to support stable RPC semantic conventions (#16121)
  • Deprecated PeerServiceResolver, PeerServiceAttributesExtractor, and HttpClientPeerServiceAttributesExtractor in favor of renamed classes ServicePeerResolver, ServicePeerAttributesExtractor, and HttpClientServicePeerAttributesExtractor (#16071)
  • Deprecated setStatementSanitizationEnabled() in favor of setQuerySanitizationEnabled() across database instrumentation builders (Cassandra, JDBC, Lettuce, Mongo, R2DBC) (#16133)
  • Deprecated individual runtime metric classes (Classes, Cpu, GarbageCollector, MemoryPools, Threads) in favor of RuntimeMetrics (#16064)
  • Deprecated SqlStatementInfo in favor of SqlQuery, and SqlStatementSanitizer in favor of SqlQuerySanitizer (#16074)

🌟 New library instrumentation

📈 Enhancements

  • Logback appender: add declarative config support (#15813)
  • OkHttp: avoid weak reference in library instrumentation (#15977)
  • HTTP clients: Enable query redaction by default in library instrumentations (#16096)
  • HttpURLConnection: mark as early instrumentation to ensure virtual fields are used (#16142)

🛠️ Bug fixes

  • Dropwizard metrics: Sanitize names where needed to comply with OpenTelemetry requirements (#15954)
  • Instrumentation API incubator: Fix span key mapping for MESSAGING_CONSUMER_PROCESS (#16001)
  • Couchbase: Fix local address occasionally missing (#16035)
  • Internal logging: Map jul config level to debug instead of info (#16141)

🙇 Thank you

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

@imavroukakis
@jackshirazi
@jaydeluca
@jkwatson
@laurit
@pepeshore
@psx95
@roberttoyonaga
@robsunday
@steverao
@surbhiia
@SylvainJuge
@thiagohora
@toon-borgers-hs
@trask
@zeitlinger

Version 2.24.0

Choose a tag to compare

@github-actionsgithub-actions released this 17 Jan 01:47
960ce5c

This release targets the OpenTelemetry SDK 1.58.0.

Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.

⚠️ Breaking Changes

  • Remove support for previously deprecated property otel.instrumentation.logback-appender.experimental.capture-logstash-attributes (#15722)
  • Remove deprecated methods from HTTP library instrumentations (#15802)

🚫 Deprecations

  • JMX Metrics: Deprecated addClassPathRules and addCustomRules methods in JmxTelemetryBuilder, and moved non-public classes to an internal package (#15658)
  • Deprecated setMessagingReceiveInstrumentationEnabled in favor of setMessagingReceiveTelemetryEnabled to match config property name (#15668)
  • Deprecated database client attribute getter methods getDbSystem() and getResponseStatus() in favor of getDbSystemName() and getResponseStatusCode() to align with stable semantic conventions (#15696)
  • Deprecated setCapturedRequestParameters() in Servlet library instrumentation in favor of Experimental.setCapturedRequestParameters() as request parameter capture is experimental (#15826)
  • Deprecated getHttpClient(), setHttpClientTransport(), and setSslContextFactory() in Jetty client instrumentation in favor of new builder-style methods newHttpClient(), newHttpClient(SslContextFactory), and newHttpClient(HttpClientTransport, SslContextFactory) (#15827)
  • Deprecate Netty experimental method that is still in public API (#15828)
  • Deprecated newHttpClient() in favor of wrap() in Java HTTP Client instrumentation for consistency with naming conventions across library instrumentations (#15829)
  • Deprecated new* methods in favor of create* methods across multiple instrumentation libraries for consistency (e.g., newHttpClient()createHttpClient(), newInterceptor()createInterceptor()) (#15832)
  • Deprecated methods in SqlStatementInfo and MultiQuery in favor of methods using stable semantic convention terminology: getFullStatement()getQueryText(), getOperation()getOperationName(), and getStatements()getQueryTexts() (#15833)
  • Deprecated database getter methods in favor of methods using stable semantic convention terminology: getResponseStatusCode()getDbResponseStatusCode(), getBatchSize()getDbOperationBatchSize(), and getQueryParameters()getDbQueryParameters() (#15859)

📈 Enhancements

🛠️ Bug fixes

  • Servlet library instrumentation: fix capturing enduser.id (#15858)
  • Fix agent startup failing on read-only filesystem (#15682)

🙇 Thank you

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

@breedx-splk
@brunobat
@copilot-pull-request-reviewer
@gaeljw
@igreenfield
@jack-berg
@jaydeluca
@jkwatson
@JonasKunz
@laurit
@mznet
@novoslavik
@philsttr
@robsunday
@steverao
@SylvainJuge
@toon-borgers-hs
@trask
@yairogen
@zeitlinger

Version 2.23.0

Choose a tag to compare

@github-actionsgithub-actions released this 13 Dec 01:05
351b697

This release targets the OpenTelemetry SDK 1.57.0.

Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.

⚠️ Breaking Changes

  • ActiveMQ Classic JMX metrics: rename attributes and metrics to align with semantic conventions (see PR description for specifics) (#14996)
  • Library instrumentation: remove previously deprecated methods from telemetry builders (#15324)
  • Logback: captureArguments no longer captures message template, use captureTemplate (#15423)
  • Play: disable controller spans by default, re-enable with otel.instrumentation.common.experimental.controller-telemetry.enabled=true (#15604)

🚫 Deprecations

  • Library instrumentation: deprecate setSpanNameExtractor() and setStatusExtractor() in favor of setSpanNameExtractorCustomizer() and setStatusExtractorCustomizer() (#15529)

🌟 New javaagent instrumentation

🌟 New library instrumentation

📈 Enhancements

  • Spring starter: add declarative config logging exporter (#14917)
  • Failsafe: add support for RetryPolicy (#15255, #15537)
  • GraphQL: add option to disable capturing query documents (#15384)
  • JMX metrics: allow any classpath resource path in rules (#15413)
  • Spring Boot actuator autoconfigure: support Spring Boot 4 (#15433)
  • Spring JMS: support Spring Boot 4 (#15434)
  • Spring starter: support Spring Boot 4 (#15459)
  • Lettuce: support custom ClientResources (#15470)
  • Lettuce: add reactor-core compatibility checker (#15472)
  • Servlet: propagate context explicitly for async runnables (#15476)
  • Servlet: always add trace_id and span_id attributes to requests (#15485)
  • Pekko HTTP: separate route instrumentation from HTTP server instrumentation (#15499)
  • MongoDB: emit versioned scope name (#15500)
  • Spring WebFlux: support Spring Boot 4 (#15502, #15574)
  • Spring WebMVC: support Spring Boot 4 (#15525)
  • Spring Cloud Gateway: support Spring Boot 4 (#15540)
  • Spring starter: add missing Kafka configuration options (#15592)
  • OpenTelemetry API interop: support new GlobalOpenTelemetry methods introduced in 1.57 (#15620)

🛠️ Bug fixes

  • Spring Web/WebFlux: restore GraalVM native-image compatibility (#15306)
  • Spring Kafka: end span in afterRecord callback (#15367)
  • Spring starter: fix environment variable overrides for array properties in declarative config (#15424)
  • Ktor: prevent double end() calls in KtorServerTelemetry (#15452)
  • OpenTelemetry API interop: fix null handling in ExtendedOpenTelemetry declarative config (#15478)
  • Akka HTTP: fix http.route attribute capture and span naming (#15504)
  • Extensions: fix SPI loading for InstrumenterCustomizerProvider and related classes (#15538)
  • Sanitize sql statements that may contain unquoted passwords (#15607)

🙇 Thank you

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

@123liuziming
@bioplasticlining
@Cirilla-zmh
@copilot-pull-request-reviewer
@cyrille-leclerc
@droidnxs
@gaeljw
@George-C-Odes
@ghareeb-falazi
@GondaliaKaran
@gquintana
@jack-berg
@jaydeluca
@laurit
@marychatte
@obs-gh-abhishekrao
@onurkybsi
@philsttr
@prydin
@robsunday
@steverao
@SylvainJuge
@Tefaier
@thompson-tomo
@ThorbenKuck
@toon-borgers-hs
@trask
@tylerbenson
@zeitlinger