Releases: open-telemetry/opentelemetry-java-instrumentation
Version 0.17.0
This update requires the use of OpenTelemetry Java SDK 0.17.0 or 0.17.1. There are many breaking changes in the API so if you manually trace using the API, you should carefully go through the release notes to see what needs to be updated.
If you use library instrumentation, you will want to take advantage of our shiny new BOM that we now publish to manage versions of io.opentelemetry.instrumentation
and io.opentelemetry
at io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:0.17.0-alpha
. This means you do not want to use the SDK's BOM, io.opentelemetry:opentelemetry-bom
- our BOM includes a compatible version so you don't have to worry about it.
Note that all artifacts other than io.opentelemetry.javaagent:javaagent
have had the -alpha
suffix attached to their version number to reflect the fact that we plan on releasing the javaagent as a stable artifact next month - all other artifacts will still be alpha quality and have continuing breaking changes.
🌟 New instrumentation
- RxJava2 instrumentation (library only for now) #2191
- Apache HTTPClient 5 #2254
- Runtime metrics for JVM enabled by javaagent #2311
📈 Improvements
- Some extraneous libraries have been removed from the agent package #2238 #2251 #2288
- The agent does not register an extraneous shutdown hook which is now managed by the SDK #2283
- Context is propagated to apache httpclient async callback #2276
- When agent debug is enabled, spans are also logged to standard out #2270
- Possibly minor startup performance improvement by avoiding String.format #2309
- Metric collected for when we suppress nested spans #2135
- MongoDB span names follow specification #2307
- More jetty handlers are instrumented #2320
🛠️ Bug fixes
- AWS Lambda instrumentation will now propagate from HTTP headers if X-Ray is disabled #2222
- Apache Camel instrumentation will not throw an NPE in app code when SQS propagation is not enabled #2250
- Prometheus collector's required HTTP dependency is restored #2259
- gRPC client instrumentation does not squash exceptions thrown in client message handlers #2294
- App server context name is correctly set for managed app servers #2089
- HttpUrlConnection exceptions correctly set status code #2272
🧰 Tooling
- Smoke tests are faster by only starting shared containers once #2249
- A license report of all dependencies bundled into the agent is now also bundled in #2239 #2261 #2278
- Tracers now return context instead of spans #2232
- Downstream instrumentation tests can now be written in java with junit5 using our new extensions #2241
- In general, the testing framework now makes less assumptions and should support wider use cases, for example
ClassRule
#2265 - Library instrumentation can now use HttpServerTest and HttpClientTest abstractions #2299
- Less chance (no chance?) of deadlock in builds due to logging race conditions #2236
- JDK does not need to be in the
PATH
to run the build #2322
☢️ Breaking changes
- Logging injection now sets fields
trace_id
,span_id
, andtrace_flags
, instead oftraceId
,spanId
, andsampled
- AWS Lambda instrumentation now requires an
OpenTelemetrySdk
to be provided for initialization of non-wrappers. Wrappers useopentelemetry-sdk-extension-autoconfigure
similar to the javaagent. #2328
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@agoallikmaa
@anuraaga
@breedx-splk
@iNikem
@jamal
@jkwatson
@kubawach
@laurit
@Oberon00
@mateuszrzeszutek
@trask
Version 0.16.1
This patch release contains a bug fix for a NPE in Apache Camel instrumentation - SQS context propagation (#2250).
For more details about what has changed since 0.15.1 see the release notes for version 0.16.0.
Version 0.16.0
This update is compatible with the OpenTelemetry Java SDK 0.16.0. There are many breaking changes in the API so if you manually trace using the API, you should carefully go through the release notes to see what needs to be updated.
🌟 New instrumentation
- Apache Dubbo #2108
- Apache CXF (JAX-RS) #2192
- JAX-WS #2176
- Reactor Netty 1.0 #2156
- Apache Wicket #2139
📈 Improvements
- Additional Cassandra span attributes captured #1314
- Apache Camel SQS propagation #2102
- Tracers support injection of
OpenTelemetry
instances #2233, #2197 Context
is used more consistently in Tracer classes #2194- Major documentation re-org, no longer massive wall of text(!) #2226
🛠️ Bug fixes
🧰 Tooling
- More muzzle doc #2158
- Static imports (style guidelines) doc #2161
- Clean up of spock test runners #2134, #2223, #2205, #2196
- Tracer hierarchy clean up #2159
- Improved test stability #2169, #2170, #2181, #2202, #2154
- Test latest hibernate versions #2182
- New tests exercising http client concurrency #2156
- Automation of draft release in GHA workflow #2237
- Add tests for tomee application server #2175
☢️ Breaking changes
- Some configuration properties have been updated to the latest specification
- OTEL_TRACE_EXPORTER/otel.trace.exporter has been replaced with OTEL_TRACES_EXPORTER/otel.traces.exporter
- OTEL_TRACE_SAMPLER/otel.trace.sampler has been replaced with OTEL_TRACES_SAMPLER/otel.traces.sampler
- OTEL_TRACE_SAMPLER_ARG/otel.trace.sampler.arg has been replaced with OTEL_TRACES_SAMPLER_ARG/otel.traces.sampler.arg
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@breedx-splk
@brianashby-sfx
@evantorrie
@FrankSpitulski
@gliptak
@iNikem
@jkwatson
@kubawach
@laurit
@markfink-splunk
@mateuszrzeszutek
@trask
@tydhot
@vovencij
Version 0.15.1
This patch release contains a bug fix fox SQS propagation in apache-camel instrumentation (#2102).
For more details about what has changed since 0.14.0 see release notes for version 0.15.0.
Version 0.15.0
This update is compatible with the OpenTelemetry Java SDK 0.15.0. Most breaking changes are in the SDK so if you are using library instrumentation and the SDK directly, you may need to update code for initializing the SDK.
🌟 New instrumentation
- JSF actions #2018
- MongoDB 4 #2046
- Spring batch: items #2047
- Spring Web Services #2111
- Mojarra / Myfaces #2119
📈 Improvements
- Fix instrumentation of Jersey 2.30 #2071
- The agent now uses the SDK autoconfiguration module for environment variables #2077
- Servlet tracer names now reflect the version of the instrumentation library, e.g. servlet-2.0, servlet-3.0 #1979
- JMS does not create spans when no messages are received #2091
- SQL sanitization performance improved and now results are cached #2113 #2094
- AWS SDK v1 instrumentation will now always use AWS trace propagator without configuring it globally #2117
- AWS SDK v1 propagates SQS trace context #2114
🛠️ Bug fixes
- The agent will work correctly with the latest version of Netty #2070
- The agent will work correctly with the latest version of Apache Camel #2084
- The agent will work correctly with the latest version of Spring Webflux #2100
🧰 Tooling
- Tests for verifying behavior with Apache Camel and AWS SQS #2061
- Netty instrumentation only attempts to be applied now if the classpath contains 4.0, or 4.1 respectively #2099
- The default branch has been renamed to
main
#2118 - Agent testing libraries are published for use in custom distributions #2133
☢️ Breaking changes
- Jaeger thrift exporter has been removed from the default agent distribution. Splunk distribution still includes it. #2073
- Instrumentation-specific flags for enabling SQL sanitization have been consolidated into one
otel.instrumentation.db-statement-sanitizer.enabled
- Many configuration properties have been updated to the latest specification
otel.exporter
->otel.trace.exporter
/otel.metrics.exporter
. The new variables only accept a single valueotel.exporter.otlp.endpoint
now requires a scheme ofhttp://
orhttps://
.otel.exporter.otlp.insecure
has been removedotel.bsp.max.queue
->otel.bsp.max.queue.size
otel.bsp.max.export.batch
->otel.bsp.max.export.batch.size
otel.bsp.export.sampled
has been removed. Only sampled spans are exportedotel.config.sampler.probability
->otel.trace.sampler=parentbased_traceidratio
andotel.trace.sampler.arg=<probability>
otel.config.max.attrs
->otel.span.attribute.count.limit
otel.config.max.events
->otel.span.event.count.limit
otel.config.max.links
->otel.span.link.count.limit
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@ben-childs-docusign
@breedx-splk
@iNikem
@jkwatson
@kubawach
@laurit
@malafeev
@mateuszrzeszutek
@pavolloffay
@trask
@vovencij
Version 0.14.0
This update is compatible with the OpenTelemetry Java SDK 0.14.1. Most breaking changes are in the SDK so if you are using library instrumentation and the SDK directly, you may need to update code for initializing the SDK.
🌟 New instrumentation
📈 Improvements
- Grizzy spans have exceptions added #1987
- AWS Lambda flush timeout can be configured #1960
- Context propagation for apache camel instrumentation #2042
- Netty instrumentation adds exceptions #2027
- Logging exporter outputs one span per line instead of combining a batch #2054
- Lambda SQS users do not need to configure xray as their app propagators anymore #2056
- Armeria instrumentation updated to target 1.3.0 which had breaking changes
🛠️ Bug fixes
- External exporter JAR file is closed correctly during initialization #1970
- Correctly propagate context in Jetty #1966
- Correctly handle servlet2 response with unset status #1985
- Agent logs its version at startup again #2026
🧰 Tooling
- End-to-end benchmark for latency when using the agent #1935
- Tests are now run with an actual javaagent instead of post-startup bytebuddy reinstantiation #1643
- Automatic code security scanning enabled #1971
- Jackson version updated #2040
☢️ Breaking changes
- Armeria instrumentation does not support Armeria versions before 1.3.0
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@amanbrar1999
@anuraaga
@avpatel257
@bhautikpip
@breedx-splk
@iNikem
@jkwatson
@kubawach
@laurit
@malafeev
@mateuszrzeszutek
@pavolloffay
@tobias-
@trask
@vovencij
Version 0.13.0
This update is compatible with the OpenTelemetry Java SDK 0.13.1. Most breaking changes are in the SDK so if you are using library instrumentation and the SDK directly, you may need to update code for initializing the SDK.
🌟 New instrumentation
- Context propagation for Spring
SimpleAsyncTaskExecutor
#1897 - Spring batch jobs #1843
- Tomcat server handlers for more precise instrumentation vs generic servlet #1902
- OpenTelemetry baggage is now bridged and can be used in apps #1927
📈 Improvements
- Jaeger Thrift exporter included in agent with the configuration value name
jaeger-thrift
#1868
🛠️ Bug fixes
- AWS SDK Instrumentation helper injection works again #1876
🧰 Tooling
- Fix smoke tests for liberty app container #1853
- SPI resources injected by instrumentation now detected by muzzle #1918
- Muzzle warnings correctly logged in tests #1930
☢️ Breaking changes
- Attributes that are not part of the opentelemetry specification have been hidden behind opt-in flags. If there are any attributes that you think would be great for anyone, please file an issue on the spec repo for adding them natively.
Flag guards are per instrumentation
- Hytrix:
otel.instrumentation.hystrix.experimental-span-attributes
- Kafka:
otel.instrumentation.kafka.experimental-span-attributes
- Spring Webflux: otel.instrumentation.spring-webflux.experimental-span-attributes
- Spring WebMVC: otel.instrumentation.spring-webmvc.experimental-span-attributes
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@breedx-splk
@iNikem
@laurit
@mateuszrzeszutek
@pavolloffay
@trask
@vovencij
Version 0.12.0
This update is compatible with the OpenTelemetry Java SDK 0.12.0. Most breaking changes in its API are API-compatible if you recompile your app.
NB: The snapshots repository has been moved to Sonatype OSS (https://oss.sonatype.org/content/repositories/snapshots/)
🌟 New instrumentation
- gRPC instrumentation has been updated to support the latest version #1839
📈 Improvements
- Context is propagated even when there is no span in more locations #1802 #1810 #1811
WithSpan
will not produce nested server or client spans anymore #1801- Standard
Resource
extensions for process and runtime are enabled automatically #1809 - HTTP attributes are populated for AWS Lambda spans #1780
- Additional FaaS spans are populated for AWS Lambda #1831
🛠️ Bug fixes
- AWS SDK suppresses client spans, preventing authentication signature break #1837
🧰 Tooling
- A new matrix of tests of various app servers has been added #1821
- We now publish the instrumentation artifacts to Maven Central #1823
☢️ Breaking changes
-
servlet.context
span attribute is not set anymore #1783 -
Some configuration properties have been renamed #1786
otel.instrumentation.executors.includeAll --> otel.instrumentation.executors.include-all
otel.hystrix.tags.enabled --> otel.instrumentation.hystrix.tags
otel.kafka.client.propagation.enabled --> otel.instrumentation.kafka.client-propagation
otel.instrumentation.defaultEnabled --> otel.instrumentation.default-enabled
- Several custom attributes have been renamed to be prefixed by instrumentation name. If any of these seem interesting to formalize, let us know or go ahead and file a specification issue! #1784
Instrumentation affected: apache-camel, couchbase, grpc, jaxrs, kafka-clients, lettuce, rabbitmq, spring
- Exporter packages use
exporter
instead ofexporters
in artifact name, e.g.,opentelemetry-javaagent-exporter-zipkin
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
Version 0.11.0
This update is compatible with the OpenTelemetry Java SDK 0.11.0.
NB! That release contains A LOT OF breaking changes related to builders, please read its change log carefully!
🌟 New instrumentation
- AWS Lambda Instrumentation of HTTP requests (e.g., API Gateway) #1650 #1536
- http4k (hosted out of tree but please give it a try!) #1605
- reactor-netty context propagation #1601
- Struts 2 #1628
- Runtime metrics (JVM metrics) moved from SDK repository #1720
- RXJava (previously existed only in agent, now published as library) #1732
📈 Improvements
- Anyone interested in the challenges of working with classloaders in Java agents can check out our design doc
- JDBC span names now include the statement name, DB name, and DB table #1533
- Many new SPIs to better configure the agent in restributions #1613
- Servlet
Filter
instrumented directly instead ofFilterChain
#1606 - Mongo command scrubber improvements #1663 #1662
- System metrics instrumentation updated to follow new specification #1705
- Baggage propagator enabled by default #1545
- Anyone creating a custom distribution of the agent should check out the example #1621
🛠️ Bug fixes
- Muzzle configuration issue effecting Wildfly and JDBC instrumentation #1585 #1593
- B3 multi propagation format can be configured with
b3multi
flag #1647 - AWS SDK v2 instrumentation now applied to all clients, not just ones after the first one #1759
- Context is propagated to requests from AWS SDK v2 / v1 #1763 #1771
- Kotlin auto instrumentation updated to use context element, should have less issues (please file any issues if you run into them!) #1618
🧰 Tooling
- Significant refactoring to instrumentation module setup introducing the
InstrumentationModule
interface #1528 - Byte buddy version bumped to 1.10.18 (should fix issues with Weblogic Server) #1596
- Gradle toolchains feature implemented to allow running tests on different JVMs without having to install them yourself #1627
- We now use checkstyle to check for some code conventions (not formatting) of the Google style guide #1641
- Muzzle now automatically generates injected helpers instead of being maintained manually #1714
☢️ Breaking changes
- Several configuration options have been renamed
otel.trace.enabled --> otel.javaagent.enabled
otel.trace.debug --> otel.javaagent.debug
otel.trace.config --> otel.javaagent.config
otel.trace.runtime.context.field.injection --> otel.javaagent.runtime.context.field.injection
otel.instrumentations.enabled --> otel.instrumentations.default-enabled
otel.trace.classes.excludes --> otel.javaagent.exclude-classes
###🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@agoallikmaa
@anuraaga
@daviddenton
@hasanfd
@holyjak
@iNikem
@jkwatson
@jamal
@jamesylgan
@jyemin
@kubawach
@malafeev
@mateuszrzeszutek
@MrCull
@pavolloffay
@snyder114
@TeeVenDick
@trask
@vovencij
Version 0.10.1
This update is compatible with the OpenTelemetry Java SDK 0.10.0.
NB! That release contains A LOT OF breaking changes, please read its change log carefully!
🌟 New instrumentation
- Better support for AWS lambda tracing (#1471)
- Add support for system metrics (#1309, #1530)
- Apache Camel 2.20.x instrumentation (#1397)
📈 Improvements
- Add SPI to configure additional bootstrap package prefixes (#1380)
- Add operation and collection attributes for MongoDB spans (#1398)
- Change Play framework span name (#1416)
- Change JAX-RS span name (#1425)
- Better support for parsing IPv6 JDBC urls (#1403)
- Prevent NoSQL databases instrumentations from exposing sensitive information (#1405, #1427, #1455, #1462, #1441, #1509)
- Instrumentation libraries names as reported by telemetry does not include instrumented library versions anymore (#1446)
LoggingExporter
now uses the agent's logging framework instead of standard out (#1447)- Add context root to the front of the route in the span name (#1418)
- Better selection of telemetry exporter (#1513)
🛠️ Bug fixes
- Fix
db.name
span attribute for MongoDB (#1419 ) - Fix
HttpURLConnection
instrumentation on WebLogic (#1439) - Proper scope handling for Resteasy instrumentations. (#1442)
- Fix broken Armeria instrumentation (#1451)
- Fix setting
net.peer.*
semantic attributes for Cassandra 4.+ (#1482)