⚠️ There is a memory leak in the recent 1.5.0 and 1.5.1 releases of the Java agent that will likely impact anyone who is not using a metrics exporter. Please use the 1.5.2 release instead.
🌟 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