Releases: open-telemetry/opentelemetry-java-instrumentation
Version 1.5.1
This release requires the use of OpenTelemetry Java SDK 1.5.0.
This is a patch release on the previous 1.5.0 release, fixing the three issues below. If you are not affected by any of these issues, you do not need to update.
🛠️ Bug fixes
Version 1.5.0
🌟 New library instrumentation
- Library instrumentation for Apache HTTP Client 4.3 (#3623)
- Library instrumentation for Ratpack server (#3749)
📈 Enhancements
- Support Couchbase 3.2.0 (#3645)
- Handle port and IPv6 in forwarded headers (#3651)
- Set real Hibernate span name on method entry to help samplers (#3603)
- Reduce overhead of unsampled requests (#3681)
- Sanitize SQL in Apache Camel instrumentation (#3683, #3717)
- Add option to create span on new netty connection (#3707)
- Propagate context into jdk http client callback (#3719)
- Instrument Tomcat executor to support async servlets in new Tomcat 9.0.52 release (#3789)
- Add otlp-logging exporter (#3807)
- Add new option to support capturing nested client spans of different types (#3691)
- Propagate context to lettuce callbacks (#3839)
- Instrument ForkJoinTask.fork() (#3849)
- Implement a Call.Factory for okhttp 3.x+ library instrumentation (#3812)
- Record exception in Dubbo instrumentation (#3851)
- Propagate context to elasticsearch callbacks (#3858, #3861)
- Added Vertx http client 4 instrumentation (#3665)
- Make empty agent bridged context equal root context (#3869)
🛠️ Bug fixes
- Fix OkHttp 3 correlation when using callback under concurrency (#3669, #3676)
- Fix Netty span not captured on read timeout (#3613)
- Fix Netty connection failure handling when listener is lambda (#3569)
- Fix NullPointerException in Apache HttpAsyncClient instrumentation (#3692)
- Fix NullPointerException in Tomcat instrumentation (#3705)
- Fix Apache HttpClient telemetry when host and absolute URI are used (#3694)
- Fix JDK http client should propagate even when sampled out (#3736)
- Limit netty exception capture to netty spans (#3809)
- Fix jetty httpclient returning empty response when instrumented (#3831, #3833)
- Don't clobber user decorators in Armeria client instrumentation (#3873)
- Use valid Java identifiers for message keys (#3863)
- Fix ClassNotFoundException: HandlerMappingResourceNameFilter in some ear deployments (#3718)
🧰 Tooling
- Improve extension sample documentation and add it to the README file (#3656)
- Extract muzzle check plugin (#3657)
- Move instrumentation specific classes out of javaagent-instrumentation-api (#3604, #3763)
- Fill
http.client_ip
in ServerInstrumenter (#3756) - Fix printMuzzleReferences gradle task (#3808)
- Introduce stable property for external extensions (#3823)
- Run tests on j9 JVM during CI (#3764)
- Support looking up a ContextStore from outside of Advice (#3827)
- Deprecate MetricExporterFactory (#3862)
- Don't pass configuration to SDK autoconfigure through system props (#3866)
- Rename Config get*Property() methods to get*() (#3881)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@breedx-splk
@caniszczyk
@dengliming
@Enkelian
@HaloFour
@iNikem
@jack-berg
@jkwatson
@jsuereth
@kubawach
@laurit
@lmolkova
@mateuszrzeszutek
@michaelbannister
@mijingling
@necrolyte2
@randomanderson
@robododge
@seshness
@theletterf
@trask
@tydhot
@tylerbenson
@vovencij
@WillsonHG
@zmapleshine
Version 1.4.1
This release requires the use of OpenTelemetry Java SDK 1.4.1. It is a patch release on the previous one fixing a regression in the Apache HttpAsyncClient instrumentation. If you do not use this, you do not need to update.
🛠️ Bug fixes
- Fix NPE in Apache HttpAsyncClient instrumentation (#3692)
Version 1.4.0
This release requires the use of OpenTelemetry Java SDK 1.4.1.
Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent
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.
☢️ Behavioral changes
- Updated all instrumentation names to
io.opentelemetry.{libName}-{libVersion}
(#3411) - Updated RabbitMQ to follow semantic conventions (#3425)
🌟 New javaagent instrumentation
- Jetty 9 HTTP client instrumentation (#3079)
🌟 New library instrumentation
📈 Enhancements
- Make @RabbitListener propagate context properly (#3339)
- Add peer.service to grpc javaagent instrumentation (#3357)
- Propagate context to cassandra4 callbacks (#3371)
- Update Armeria instrumentation to support new Armeria 1.9.0 release (#3407)
- Context propagation for ratpack Execution.fork() (#3416)
🛠️ Bug fixes
- Fix Kafka stream instrumentation to support Kafka 2.6 and above (#3438)
- Fix Dubbo trace/span cross-process propagation (#3442)
- Fix
peer.service
configuration mapping (#3378)
🧰 Tooling
- Hide
Config#create()
method and use builder everywhere (#3338) - Ignore task classes using IgnoredTypesConfigurer (#3380)
- Exclude bootstrap dependencies from inst (#3432)
- Exclude duplicates from -all.jar (#3430)
- Port AsyncSpanEndStrategy to Instrumenter API (#3262)
- Rename
opentelemetry-javaagent-api
artifact toopentelemetry-javaagent-instrumentation-api
(#3513)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@agoallikmaa
@amitgud-doordash
@anuraaga
@Asafb26
@bnikster
@breedx-splk
@dengliming
@devinsba
@donbeave
@Enkelian
@EricGreen239
@GuillaumeWaignier
@HaloFour
@iNikem
@jamesylgan
@jkwatson
@Johnny850807
@judomu
@laurit
@liaozhenlin
@mateuszrzeszutek
@matthias-huber
@michaelbannister
@minwoox
@mnadeem
@necrolyte2
@Oberon00
@previousdeveloper
@RashmiRam
@rbelfils
@robododge
@tobias-
@trask
@trustin
@zmapleshine
Version 1.3.1
This release requires the use of OpenTelemetry Java SDK 1.3.0. It is a patch release on the previous one fixing issues with the BOM, reactor-rabbitmq, and Spring JMS. If you do not use any of these, you do not need to update.
🛠️ Bug fixes
Version 1.3.0
This release requires the use of OpenTelemetry Java SDK 1.3.0.
Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent
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.
🌟 New javaagent instrumentation
- Spring Integration javaagent instrumentation (#3295)
🌟 New library instrumentation
- Spring Integration library instrumentation (#3120)
📈 Enhancements
- Support peer-service-mapping in OkHttp3 instrumentation (#3063)
- Low cardinality span names for Hibernate spans (#3106)
- Propagate context to armeria callbacks (#3108)
- Add attributes to netty connection failure span (#3115)
- Defer initialization of OpenTelemetry in spring-boot-autoconfigure (#3171)
- Support couchbase 3.1.6 (#3194)
- New experimental support for agent extensions (#2881, #3071, #3226, #3237)
- Propagate context to akka http callbacks (#3263)
☢️ Behavioral changes
- Update agent logger prefix (#3007)
- Remove khttp instrumentation (#3087)
- Enable akka actor instrumentation by default (#3173)
🛠️ Bug fixes
- Remove Netty instrumented handler wrapper when original handler is removed (#3026)
- Fix memory leak when Netty handler is a lambda (#3059)
- Fix race condition on Undertow (#2992)
- Remove db.connection_string from redis instrumentation (#3094)
- Fix context propagation leak in Akka instrumentation (#3099)
- Fix webflux handler span sporadically not ending (#3150)
- End span on cancellation of subscription to reactive publishers (#3153)
- End span on cancellation of Guava future (#3175)
- Create Netty connection failure span only when first operation fails (#3228)
- Internal instrumentation should always be enabled by default (#3257)
- Fix context propagation leak in Akka HTTP instrumentation (#3264)
- Only include exporters in the
-all
jar (#3286) - Fix ForkJoinPool sometimes not instrumented (#3293)
🧰 Tooling
- Migrate MuzzlePlugin to Java (#2996, #3017)
- Refactor TypeInstrumentation#transformers() method (#3019)
- Change a couple of Longs to Integers in Instrumenter API (#3043)
- Add peer.service to Instrumenter API (#3050)
- Add response type parameter to db attributes extractor (#3093)
- Add optimized Attributes implementation for Instrumenter (#3136)
- Rename ComponentInstaller to AgentListener and add #order() method (#3182)
- Update ByteBuddy (#3254)
- Introduce IgnoredTypesConfigurer SPI to enable defining per-module ignores (#3219)
- Extract agent shadow configuration to conventions script (#3256)
- Deprecate SpanExporterFactory in favor of ConfigurableSpanExporterProvider (#3299)
- Refactor span names class (#3281)
- Move http client/server testing dependencies to internal package (#3305)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@agoallikmaa
@anuraaga
@ben-manes
@breedx-splk
@dengliming
@HaloFour
@iNikem
@jkwatson
@kubawach
@laurit
@mateuszrzeszutek
@matthias-huber
@michaelbannister
@minwoox
@necrolyte2
@robododge
@tobias-
@trask
@tylerbenson
@WillsonHG
Version 1.2.0
This release requires the use of OpenTelemetry Java SDK 1.2.0.
Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent
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.
🌟 New javaagent instrumentation
- RxJava 3 (#2794)
🌟 New library instrumentation
- RxJava 3 (#2794)
📈 Enhancements
- Support sub-millisecond precision for start/end times on Java 9+ (#2600)
@WithSpan
async support added for methods returning async Reactor 3.x types (#2714)@WithSpan
async support added for methods returning Guava ListenableFuture (#2811)- Semantic attributes
code.namespace
andcode.function
captured on JAX-RS internal spans (#2805) - Context propagated to reactor-netty callbacks (#2850)
☢️ Behavioral changes
- AWS lambda flush timeout raised to 10 seconds (#2855)
SERVER
span names improved for Spring MVC, Grails, Wicket, and Struts (#2814)SERVER
span names improved for Servlet filters (#2887)SERVER
span names improved for Resteasy (#2900)SERVER
span names improved for Jersey and CXF (#2919)- JAX-RS
@ApplicationPath
annotation captured as part ofSERVER
span name (#2824) - RequestDispatcher
forward()
andinclude()
internal spans removed (#2816) - Raised gRPC min version supported to 1.6 in order to use new gRPC context bridge API (#2948)
🛠️ Bug fixes
- gRPC context bridging issues (#2564, #2959)
- URL credentials of the form
https://username:[email protected]/
no longer captured (#2707) - Spring MVC instrumentation can cause Spring MVC to misroute requests under some conditions (#2815)
- RxJava2 NoSuchFieldError (#2836)
- Duplicate http client tracing headers (#2842)
- Netty 4.1 listeners could not be removed by application (#2851)
- NPE caused in gRPC ProtoReflectionService (#2876)
- Context leak when using Ratpack (#2910)
- Context leak when using Jetty (#2920)
- Servlet instrumentation overwrites setStatus that was set manually earlier (#2929)
- Spans not captured on interface default methods annotated with JAX-RS annotations (#2930)
🧰 Tooling
- Documented how to write InstrumentationModule line by line (#2793)
- New instrumenter API used in JMS instrumentation (#2803)
- Instrumenter API improvements (#2860)
- Muzzle checks whether used fields are actually declared somewhere (#2870)
- Extracted javaagent-extension-api from tooling & spi (#2879)
- You no longer have to depend on the
javaagent-tooling
module to implement custom instrumentations: a newjavaagent-extension-api
module was introduced, containing all the necessary instrumentation classes and interfaces; InstrumentationModule
andTypeInstrumentation
were moved to theio.opentelemetry.javaagent.extension.instrumentation
package;AgentElementMatchers
,ClassLoaderMatcher
andNameMatchers
were moved to theio.opentelemetry.javaagent.extension.matcher
package;- A new SPI
AgentExtension
was introduced: it replacesByteBuddyAgentCustomizer
; InstrumentationModule#getOrder()
was renamed toorder()
;InstrumentationModule#additionalHelperClassNames()
has been removed; useisHelperClass(String)
instead if you use the muzzle compile plugin. If you're not using muzzle, you can overridegetMuzzleHelperClassNames()
directly instead;InstrumentationModule#getAllHelperClassNames()
has been removed; you can callgetMuzzleHelperClassNames()
to retrieve all helper class names instead.
- You no longer have to depend on the
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@agoallikmaa
@ankitgaur-cer
@anuraaga
@asarkar
@breedx-splk
@denis111
@dkulig
@fuleow
@HaloFour
@Hangzhi
@iNikem
@jguerra
@jkwatson
@kubawach
@laurit
@mateuszrzeszutek
@necrolyte2
@pavolloffay
@pellared
@raptium
@richardstartin
@RSoodAMAT
@ryanrupp
@skoppers
@trask
@tydhot
@tylerbenson
Version 1.1.0
This release requires the use of OpenTelemetry Java SDK 1.1.0.
Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent
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.
☢️ Behavioral changes
- Update servlet attribute names for log injection, from
traceId
andspanId
totrace_id
andspan_id
(#2593) - Renamed
runtime.jvm.gc.collection
metric toruntime.jvm.gc.time
(#2616) - Removed support for Play 2.3 (#2783)
- Configuration properties names for our Spring Boot module were changed to match OpenTelemetry Java SDK properties (#2770)
🌟 New javaagent instrumentation
- Elasticsearch 7 (#2514, #2528)
- Couchbase 3.1 (#2524)
- Grails (#2512)
- RocketMQ (#2263)
- Lettuce 6 (#2589)
- Servlet 5 (#2609)
- Vaadin web framework (#2619)
- GWT (#2652)
- Tapestry web framework (#2690)
@WithSpan
support for methods returning CompletableFuture (#2530)@WithSpan
support for methods returning async RxJava 2 types (#2530)
🌟 New library instrumentation
- Library instrumentation for AWS SDK v1 (#2525)
- Library instrumentation for Lettuce 5.1 (#2533)
- RocketMQ (#2263)
- Lettuce 6 (#2589)
- Spring Boot Autoconfigure support for
@WithSpan
methods returning CompletableFuture (#2618) - Spring Boot Autoconfigure support for
@WithSpan
methods returning async RxJava 2 types (#2530) - Mongo (#2789)
📈 Improvements
- Move attributes to span builder for use by samplers (#2587)
- Apache Camel - SNS propagation (#2562)
- Apache Camel - S3 to SQS propagation (#2583)
- Added
runtime.jvm.gc.count
metric (#2616) - Support reactor netty
HttpClient.from
construction (#2650) - Improve akka instrumentation (#2737)
- Record internal metric for SQL cache misses (#2747)
- End Netty 4.1 client and server spans when the response has completed, instead of when the response has started (#2641)
- More stable context propagation for reactive Mongo client (#2758)
🛠️ Bug fixes
- Fix RestTemplateInterceptor so that it calls endExceptionally() on exception (#2516)
- Fix app failure under Eclipse OSGi (#2521)
- Fix undertow span ending too early (#2560)
- Fix context leak in AWS SDK 2.2 and RocketMQ instrumentations (#2637)
- Fix hang when a webflux http request is made inside of another webflux http request (e.g. auth filter) (#2646)
- Fix
@WithSpan
instrumentation breaking Java 6 classes (#2699) - Fix context not propagated over JMS when explicit destination used (#2702)
- Fix StackOverflowError if jdbc driver implementation of Connection getMetaData calls Statement execute (#2756)
🧰 Tooling
- Make muzzle reference creation package(s) configurable (#2615)
- Instrumentations now can skip defining context store manually (#2775)
- New Instrumenter API (#2596)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@addname
@agoallikmaa
@amitgud-doordash
@anuraaga
@breedx-splk
@felixbarny
@HaloFour
@iNikem
@jack-berg
@jkwatson
@kubawach
@laurit
@mateuszrzeszutek
@piotr-sumo
@shantanu-vsbhosale
@trask
@tydhot
Version 1.0.1
This release requires the use of OpenTelemetry Java SDK 1.0.0.
🛠️ Bug fixes
- AWS SDK v2 can be applied without a JSON-based service on the classpath (e.g., only S3 is available) #2555
- AWS resource detectors fixed to not NPE
Version 1.0.0
This release requires the use of OpenTelemetry Java SDK 1.0.0.
Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent
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.
🌟 New instrumentation
- OkHttp 3 library instrumentation #2489
- AsyncHttpClient 2+ javaagent instrumentation #2348
- JAX-WS frameworks javaagent instrumentation #2314
- RxJava 2 javaagent instrumentation #2130
📈 Improvements
- Low cardinality span names for servlet #2417
- Low cardinality span names for Cassandra #2423
- Low cardinality span names for Couchbase #2449
- Document DB statement sanitization #2451
- Update instrumentation names #2433
- Enrich JDBC spans with db.operation and db.sql.table #2425
- Add custom distro instrumentation unit test example #2373
- Perf improvement by precompiling pattern and using char replacement #2374
- Make
http.flavor
spec compliant #2370 - DynamoDB attributes #2262
- Make Netty span name spec compliant #2317
🛠️ Bug fixes
- Only set aws header attribute name once #2509
- Use correct value for operation in aws-sdk v1 #2488
- Use dynamic resolution of SQS to allow working without it #2421
- Fix for kubernetes-client instrumentation not working #2416
- Fix for log4j instrumentation breaking user's logger in 2.13.2 #2407
- Fix VerifyError in HttpUrlConnectionInstrumentation #2380
- Fix high concurrency test on later versions of Vert.x #2378
- Better context passing for Netty #2323, #2361
🧰 Tooling
- LOTS of improvements to the instrumentation-api tracers #2401, #2418, #2424, #2452, #2453, #2468, #2482, #2478, #2492
- Add a caching API based on caffeine for use from instrumentation #2477
- Fix gradle caching was not re-running some tests that needed to be re-run #2504
- SNS to SQS tracing propagation test #2483
- Use ClassValue instead of WeakMap to cache span name #2491
- Move some classes out of instrumentation-api #2466
- Fix flaky tests #2448, #2450
- Create a new SupportabilityMetrics class rather than using alpha Metrics #2353
- Use fetch-depth=0 for all non-release builds for consistent versioning #2392
- Enable disabled tests for HttpUrlConnection #2382
- Add OpenJ9 image smoke test configurations #2377, #2386
- Only run smoke tests if requested #2385
- Remove trivial uses of Guava from agent #2360
- Migrate Armeria to HttpServer/ClientTest #2345
- Remove HttpServerTest.testExceptionBody and redirectHasBody #2346
☢️ Breaking changes
- Expose only minimal entrypoint for Armeria library instrumentation #2463
- Refactor gRPC library instrumentation to expose minimal API #2474, #2510
- Migrate AWS SDK v2 to new library API pattern #2487
- Hide non-spec'd span attributes behind experimental flags #2376, #2402, #2434
- Rename some properties #2455, #2457, #2486
🙇 Thank you
Many thanks to all the people who have contributed over the past few years! We couldn't have done without everyone's help.