Skip to content

Commit 56c7578

Browse files
committed
Update changelog for upcoming release
1 parent dfbf501 commit 56c7578

1 file changed

Lines changed: 175 additions & 12 deletions

File tree

CHANGELOG.md

Lines changed: 175 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,190 @@
22

33
## Unreleased
44

5+
This release targets the OpenTelemetry SDK 1.61.0.
6+
7+
Note that many artifacts have the `-alpha` suffix attached to their version
8+
number, reflecting that they are still alpha quality and will continue to have
9+
breaking changes.
10+
Please see the [VERSIONING.md](VERSIONING.md#opentelemetry-java-instrumentation-versioning)
11+
for more details.
12+
13+
### ⚠️ Breaking changes to non-stable APIs
14+
15+
- Make `AbstractKtorServerTelemetryBuilder.isOpenTelemetryInitialized()` protected (previously
16+
public).
17+
([#17509](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17509))
18+
- Replace `ExperimentalInstrumentationModule.injectClasses(ClassInjector)` with
19+
`exposedClassNames()` for exposing helper classes to the application class loader.
20+
([#17765](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17765))
21+
- Moved `WebApplicationContextInstrumentation` from the `spring-web` instrumentation module to
22+
`spring-webmvc`; users who disabled it via `otel.instrumentation.spring-web.enabled=false` must
23+
now use `otel.instrumentation.spring-webmvc.enabled=false`.
24+
([#17856](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17856))
25+
526
### 🚫 Deprecations
627

7-
- Deprecated GraphQL builder methods `setSanitizeQuery()` and `setAddOperationNameToSpanName()`,
8-
and deprecated config key `otel.instrumentation.graphql.add-operation-name-to-span-name.enabled`
9-
in favor of `setQuerySanitizationEnabled()`, `setOperationNameInSpanNameEnabled()`, and
28+
- Deprecated `KafkaTelemetryBuilder.setMessagingReceiveInstrumentationEnabled(boolean)` in favor of
29+
`setMessagingReceiveTelemetryEnabled(boolean)`.
30+
([#17092](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17092))
31+
- Deprecated GraphQL builder methods `setSanitizeQuery()` and `setAddOperationNameToSpanName()`, and
32+
deprecated config key `otel.instrumentation.graphql.add-operation-name-to-span-name.enabled` in
33+
favor of `setQuerySanitizationEnabled()`, `setOperationNameInSpanNameEnabled()`, and
1034
`otel.instrumentation.graphql.operation-name-in-span-name.enabled`
35+
([#17093](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17093))
36+
- Deprecate `Experimental.setEnableSqlCommenter()` in JDBC and R2DBC instrumentation in favor of
37+
`Experimental.setSqlCommenterEnabled()`.
38+
([#17094](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17094))
39+
- Rename `otel.instrumentation.servlet.capture-request-parameters` to
40+
`otel.instrumentation.servlet.experimental.capture-request-parameters` and
41+
`otel.instrumentation.servlet.add-trace-id-request-attribute` to
42+
`otel.instrumentation.servlet.experimental.trace-id-request-attribute.enabled`; old property names
43+
are deprecated.
44+
([#17113](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17113))
45+
- Deprecated the declarative config name `statement_sanitizer` in favor of `query_sanitization`, and
46+
the declarative config group `common.database` in favor of `common.db`.
47+
([#17116](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17116))
48+
- Deprecated the GraphQL declarative config name `query_sanitizer` in favor of `query_sanitization`
49+
([#17455](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17455))
1150
- Deprecated the DB query sanitization system property names
1251
`otel.instrumentation.common.db-statement-sanitizer.enabled`,
1352
`otel.instrumentation.jdbc.statement-sanitizer.enabled`,
1453
`otel.instrumentation.mongo.statement-sanitizer.enabled`, and
1554
`otel.instrumentation.r2dbc.statement-sanitizer.enabled` in favor of the corresponding
16-
`*.query-sanitization.enabled` names, and deprecated the declarative config name
17-
`statement_sanitizer` in favor of `query_sanitization`
18-
- Deprecated the declarative config group `common.database` in favor of `common.db`
19-
- Deprecated the common DB sqlcommenter system property name
55+
`*.query-sanitization.enabled` names, deprecated
2056
`otel.instrumentation.common.experimental.db-sqlcommenter.enabled` in favor of
21-
`otel.instrumentation.common.db.experimental.sqlcommenter.enabled`
22-
- Deprecated the GraphQL system property name
23-
`otel.instrumentation.graphql.query-sanitizer.enabled` and declarative config name
24-
`query_sanitizer` in favor of `otel.instrumentation.graphql.query-sanitization.enabled` and
25-
`query_sanitization`
57+
`otel.instrumentation.common.db.experimental.sqlcommenter.enabled`, and deprecated
58+
`otel.instrumentation.graphql.query-sanitizer.enabled` in favor of
59+
`otel.instrumentation.graphql.query-sanitization.enabled`
60+
([#17464](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17464))
61+
- Deprecate `InstrumentationModule.isIndyModule()`; indy mode is now determined by the agent
62+
distribution configuration instead of per-module overrides.
63+
([#17713](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17713))
64+
65+
### 📈 Enhancements
66+
67+
- Remove `log4j.map_message.` prefix from MapMessage attributes when
68+
`otel.instrumentation.common.v3-preview` is enabled.
69+
([#13871](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/13871))
70+
- Stop normalizing messaging header names (dash to underscore) when
71+
`otel.instrumentation.common.v3-preview` is enabled, so captured header attribute keys now
72+
preserve the original header name.
73+
([#14554](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/14554))
74+
- Add `db.system.name` attribute to Vertx SQL client instrumentation when stable database semantic
75+
conventions are enabled (`otel.semconv-stability.opt-in=database`).
76+
([#16254](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16254))
77+
- JDBC instrumentation now supports the `db.system.name` attribute with stable semantic convention
78+
values (e.g., `postgresql`, `oracle.db`, `ibm.db2`, `sap.hana`) when stable database semantic
79+
conventions are enabled (`otel.semconv-stability.opt-in=database`).
80+
([#16277](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16277))
81+
- Add `otel.instrumentation.common.v3-preview` flag that enables upcoming 3.0 breaking changes
82+
early.
83+
([#16459](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16459))
84+
- Optimized log event MDC attribute mapping in jboss-logmanager, log4j, and logback appenders by
85+
pre-computing attribute keys at initialization.
86+
([#16765](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16765))
87+
- Add `messaging.kafka.bootstrap.servers` attribute to Kafka producer spans when
88+
`otel.instrumentation.kafka.experimental-span-attributes` is enabled.
89+
([#17065](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17065))
90+
- Disable servlet trace-id request attribute by default when
91+
`otel.instrumentation.common.v3-preview` is enabled.
92+
([#17173](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17173))
93+
- Disable thread details span processor (`otel.javaagent.add-thread-details`) by default when
94+
`otel.instrumentation.common.v3-preview` is enabled.
95+
([#17215](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17215))
96+
- Improved javaagent startup optimization by decomposing disjunction matchers, allowing more
97+
transformations to be skipped during class loading.
98+
([#17227](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17227))
99+
- Add stable `messaging.kafka.offset` attribute to Kafka instrumentation, gated behind
100+
`otel.semconv-stability.preview=messaging`.
101+
([#17785](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17785))
102+
- Preserve original casing of servlet request parameter names in attribute keys when
103+
`otel.instrumentation.common.v3-preview` is enabled.
104+
([#17822](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17822))
105+
- Add javaagent bridging support for OpenTelemetry API 1.61 stable methods including
106+
`Tracer.isEnabled()`, metric instrument `isEnabled()`, and `Logger.setBody(Body)`
107+
([#17849](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17849))
108+
- Fix warning printed on JDK 26 about changing the value of a final field with reflection.
109+
([#17824](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17824))
110+
- Align RMI context propagation limits with Tomcat defaults, reducing max entries from 1000 to 100
111+
and adding an 8 KB total size limit to prevent excessively large payloads.
112+
([#17870](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17870))
113+
114+
### 🛠️ Bug fixes
115+
116+
- Fix `WebClientBeanPostProcessor` and `RestClientBeanPostProcessor` to avoid replacing
117+
user-customized builder beans when the OpenTelemetry tracing filter/interceptor is already
118+
registered.
119+
([#15546](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/15546))
120+
- Fix memory leak where bridged observable metric callbacks were never closed when the
121+
application-side instrument was garbage collected
122+
([#16219](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16219))
123+
- Fix Ktor server instrumentation leaking scope across requests due to `restoreThreadContext` not
124+
always being called by Ktor coroutine machinery.
125+
([#16487](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16487))
126+
- Add missing `schemaUrl` to servlet response instrumenter.
127+
([#16560](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16560))
128+
- Fix `OpenTelemetryContextDataProvider` calling `GlobalOpenTelemetry.get()` during class
129+
initialization, which could interfere with SDK setup ordering.
130+
([#16638](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16638))
131+
- Fix ZIO instrumentation destroying caller thread context on fiber suspend, which caused spans
132+
created after `unsafe.run` to lose their parent.
133+
([#16647](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16647))
134+
- Fix Spring Boot starter adding a duplicate OpenTelemetry logback appender when the appender is
135+
nested inside another appender.
136+
([#16697](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16697))
137+
- Fix bridging of `VALUE`-type attributes set via `AttributeKey.valueKey()` on spans and log records
138+
through the javaagent API bridge.
139+
([#16750](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16750))
140+
- Fix unsafe deserialization in RMI instrumentation that could lead to remote code execution
141+
(CVE-2026-33701)
142+
([#16986](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/16986))
143+
- Fix boot loader class injection for `httpurlconnection`, `methods`, and `rmi` instrumentations to
144+
use `MethodHandles.Lookup` instead of unsafe fallback on JDK 23+.
145+
([#17050](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17050))
146+
- Fix runtime-telemetry to fall back to JMX metrics when `preferJfr` is enabled but JFR is not
147+
available.
148+
([#17058](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17058))
149+
- Fix `NullPointerException` in servlet instrumentation when response object is null during error
150+
handling.
151+
([#17087](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17087))
152+
- Limit sanitized Redis command length to 32 KB to prevent excessive memory usage from very large
153+
commands.
154+
([#17139](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17139))
155+
- Fix Apache Dubbo 2.7 instrumentation SPI resource path so that filters are properly discovered by
156+
Dubbo's extension loader.
157+
([#17210](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17210))
158+
- Fix span leak on cancelled requests in Spring WebFlux server library instrumentation.
159+
([#17222](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17222))
160+
- Fix Kafka wrapped producer to respect `setPropagationEnabled(false)` and not inject trace context
161+
into message headers when propagation is disabled.
162+
([#17231](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17231))
163+
- Fix deadlock in `IgnoredClassLoadersMatcher` caused by `computeIfAbsent` holding a lock while
164+
calling `loadClass`.
165+
([#17241](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17241))
166+
- Fix Pulsar consumer instrumentation failing to instrument message listeners in newer Pulsar client
167+
versions where `triggerListener` was refactored into a lambda.
168+
([#17405](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17405))
169+
- Fix Kafka producer wrapper silently dropping context propagation when `ProducerRecord` headers are
170+
read-only (e.g. when a record is sent a second time).
171+
([#17530](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17530))
172+
- Fix `NullPointerException` in Undertow instrumentation when the active-handlers context key is
173+
absent.
174+
([#17559](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17559))
175+
- Fix `HttpServerResponseCustomizer` error isolation so that a failing customizer no longer prevents
176+
subsequent customizers from running.
177+
([#17617](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17617))
178+
- Fix `rocketmq-client-4.8` instrumentation not recording spans for ONEWAY messages.
179+
([#17656](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17656))
180+
- Fix internal application logger not activating when `otel.instrumentation.common.default-enabled`
181+
is set to `false`.
182+
([#17657](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17657))
183+
- Fix floating-point precision issue when converting Micrometer timer histogram bucket boundaries
184+
from nanoseconds to the target time unit.
185+
([#17715](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17715))
186+
- Fix `ClassNotFoundException` in `MicrometerBridgeAutoConfiguration` when Spring Boot Actuator
187+
metrics module is not on the classpath in Spring Boot 4.
188+
([#17723](https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/17723))
26189

27190
## Version 2.26.1 (2026-03-23)
28191

0 commit comments

Comments
 (0)