Releases: DataDog/dd-trace-java
1.63.0
Components
AI Guard
- ✨ Copy anomaly detection tags to AI Guard spans (#11319 - @smola)
- ✨ Collect client IP tags for AI Guard requests (#11233 - @smola)
Application Security Management (WAF)
- ✨ Collect Datadog security-testing headers on HTTP server entry spans (#11418 - @christophe-papazian)
- ✨ Add server.request.body.filenames and files_content for GlassFish/Payara (#11267 - @jandro996)
Configuration at Runtime
- 🐛 Request feature flag config on the first RC poll (#11465 - @leoromanovsky)
Continuous Integration Visibility
- ✨ Propagate Jenkins custom parent ID (#11348 - @juan-fernandez)
- ✨ Update JUnit4 instrumentation to fire test suite events for Bazel (#11322 - @daniel-mohedano)
- ✨ Propagate test skipping enabled tag to CI Visibility test spans (#11300 - @anmarchenko)
- ✨ Use test_srcdir as virtual repo root for bazel runs (#11273 - @daniel-mohedano)
- 🐛 Consider Gradle wrapper as a wrapper for headless calculations (#11266 - @daniel-mohedano)
- ✨ Report bazel as provider in telemetry for payload-in-files mode (#11207 - @daniel-mohedano)
Crash Tracking
Database Monitoring
- ✨ Add a new dynamic_service DBM propagation mode (#11432 - @amarziali)
- ✨ Improve DBM commenter (#11339 - @amarziali)
Dynamic Instrumentation
- ✨ debugger/symdb: add upload metadata fields to upload event message (#11329 - @andreimatei)
ML Observability (LLMObs)
- 🐛 emit session_id as top-level field + propagate via context (#11371 - @jessicagamio)
Metrics
- ✨⚡ Update client-side stats to use light weight Hashtable (#11382 - @dougqh)
- ✨⚡ Defer MetricKey construction to the aggregator thread (#11381 - @dougqh)
- ✨⚡ Use bitmask SpanKindFilter for per-span eligibility in metrics aggregator (#11380 - @dougqh)
- ✨ Support OTLP runtime metrics with OTel-native naming (#11318 - @link04)
- ✨ Allow ignoring the agent version when checking for trace stats computation support (#11064 - @bric3)
OpenFeature
- 🐛 Recover OpenFeature provider after initialization timeout (#11474 - @leoromanovsky)
- 🐛 Request feature flag config on the first RC poll (#11465 - @leoromanovsky)
- 🐛 use delta temporality for OTLP metrics export (#11426 - @sameerank)
- 🐛 read OTEL_SERVICE_NAME for metrics resource (#11424 - @sameerank)
Profiling
- 🐛 Bump java-profiler to 1.44.0 for more critical stability fixes (#11501 - @jbachorik)
- 🐛 Bump java-profiler to 1.43.0 for critical stability fixes (#11475 - @jbachorik)
- ✨ Enable publishing process context by default (#11288 - @ivoanjo)
Telemetry
- ✨ Add Telemetry for Extension Finder SPIs (#11298 - @mhlidd)
- ✨ Introduce OTel SPI Metrics (#11297 - @mhlidd)
- ✨ Update Baggage Metrics for Extract (#11278 - @mhlidd)
Testing
- ✨ 🪞 9979 - Record detailed instrumentation errors during tests (#10300 - @deejgregor - thanks for the contribution!)
Trace context propagation
- ✨ Add lazy-transformer to KeyClassifier for deferred header decoding (#11466 - @amarziali)
Tracer core
- ✨⚡ Cache hashCode on UTF8BytesString (#11444 - @dougqh)
- 🐛 Fix DDSpan.addThrowable crashing when exception getMessage() throws (#11428 - @ValentinZakharov)
- 🐛 Avoid extracting the baggage from null values (#11396 - @amarziali)
- ✨⚡ Update client-side stats to use light weight Hashtable (#11382 - @dougqh)
- ✨⚡ Defer MetricKey construction to the aggregator thread (#11381 - @dougqh)
- ✨⚡ Use bitmask SpanKindFilter for per-span eligibility in metrics aggregator (#11380 - @dougqh)
- 🐛 Fix bugs in GenerationalUtf8Cache constructor and access-time handling (#11323 - @dougqh)
- ✨ Remove deprecated internal spanBuilder methods (#11287 - @amarziali)
- 🐛 Fix peer IP tag in Play 2.3/2.4/2.5 (#11274 - @smola)
- ✨ Move network.client.ip out of AppSec into HttpServerDecorator (#11208 - @smola)
Instrumentations
AWS Lambda instrumentation
- ✨ force placeholder resource so the Lambda Extension drops dd-tracer-serverless-span (#11313 - @zarirhamza)
AWS SDK instrumentation
- 🐛⚡ Skip ClassCastException on every DynamoDB request in AWS SDK v2 instrumentation (#11285 - @dougqh)
Eclipse Vert.x instrumentation
- 🐛 finish vertx.route-handler via RoutingContext.addEndHandler fallback (#11312 - @zarirhamza)
gRPC instrumentation
- ✨⚡ Avoid Metadata.key allocations on grpc (#11351 - @amarziali)
JDBC instrumentation
- ✨ Mute telemetry when Connection.getClientInfo fails (#11412 - @amarziali)
JMS instrumentation
- ✨ Have a fully JMS 1.0 compatible instrumentation (#11413 - @amarziali)
OpenTelemetry instrumentation
- ✨⚡ Use FAST_LANE prioritization for OTLP trace export (#11447 - @mcculls)
- ✨ Add Additional OTel JVM Runtime Metrics and Gate "Developmental" Metrics (#11411 - @mhlidd)
- 🐛 Fix the behaviour of asynchronous counters and up-down counters (#11332 - @mcculls)
- 🐛 Avoid potential shutdown delay when using GRPC protocol for OTLP (#11321 - @mcculls)
- ✨ Support OTLP runtime metrics with OTel-native naming (#11318 - @link04)
- 🐛 Fix OtelLogRecordProcessor schedule (#11315 - @mcculls)
- 💡⚡ Reduce allocation rate when marshaling OTLP data (#11296 - @mcculls)
- ✨ Enable publishing process context by default (#11288 - @ivoanjo)
Play Framework instrumentation
Reactor instrumentation
- ✨⚡ avoid attaching context if it's already attached (#11393 - @amarziali)
Servlet instrumentation
- 🐛 Tolerate AbstractMethodError for servletRequest remote port (#11403 - @amarziali)
- 🐛 avoid NPE when headerNames is null (#11394 - @amarziali)
All other instrumentations
- 🧹 Remove deprecated startSpan and use integration name for telemetry (#11181 - @amarziali)
1.62.0
Warning
This version contains a known regression in profiler that can cause crashes in the profiled application. Please upgrade to the latest version.
Note
Do not enable Trace Payload protocol V1 until further notice as it is not enabled on all DataDog backends yet.
Components
AI Guard
- ✨ Add ai_guard.event tag to local root span (#11109 - @manuel-alvarez-alvarez)
- ✨ Expose tag probabilities in SDK responses (#11063 - @manuel-alvarez-alvarez)
Application Security Management (IAST)
- 🐛 🪞 10671 - Fix platform-dependent String.getBytes() calls to use explicit UTF-8 charset (#11149 - @mcculls - thanks @saravadeo for the contribution!)
Application Security Management (WAF)
- ✨ Add
server.request.body.files_contentAppSec address: commons-fileupload (#11137), Tomcat & Netty multipart (#11198), Jersey & RESTEasy(#11229) - @jandro996 - ✨ Add
server.request.body.filenamesAppSec address: Jersey & RESTEasy (#11171), Akka HTTP (#11173), Undertow & Play (#11174) - @jandro996 - ✨ Expose
server.io.fs.file_writeAppSec address for write file operations (#11084),FileOutputStream/FileInputStreamconstructors(#11113),Files.copyoverloads (#11179) - @jandro996 - ✨ Add AppSec Java support for AWS Lambdas (#10570 - @claponcet)
- 🐛 Restore original tracer during LambdaAppSecHandlerTest cleanup (#11172 - @claponcet)
Configuration
- ✨ Add Integration Specific Handling for Config Inversion Linter (#11074 - @mhlidd)
- ✨ Add Profiling Specific Handling for Config Inversion Linter (#11066 - @mhlidd)
- ✨ Update Spock Tests to run with
STRICT_TESTmode by default (#11032 - @mhlidd)
Continuous Integration Visibility
- ✨ Honor attempt to fix failures (#11244 - @daniel-mohedano)
- ✨ Avoid feature discover and java.nio.* access in Bazel Mode (#11232 - @daniel-mohedano)
- ✨ Implement Bazel support for CI Visibility (#11150 - @daniel-mohedano)
- 🐛 Fix TestNG session status reported with EFD (#11087 - @daniel-mohedano)
Crash Tracking
- ✨ Enable sending crashtracking reports to errors intake by default (#11243 - @amarziali)
- 🐛 🪞 10671 - Fix platform-dependent String.getBytes() calls to use explicit UTF-8 charset (#11149 - @mcculls - thanks @saravadeo for the contribution!)
- ✨ Do not use java.nio in crashtracking init (premain) (#11080 - @amarziali)
Dynamic Instrumentation
- 🐛 Fix NullPointerException on samplers (#11230 - @jpbempel)
- 🐛 Fix NullPointerException in Exception Replay (#11219 - @jpbempel)
- ✨ Add support for case insensitivity file names (#11205 - @jpbempel)
- 🐛 Fix DebuggerAgent commonInit (#11183 - @jpbempel)
- 🐛 🪞 10671 - Fix platform-dependent String.getBytes() calls to use explicit UTF-8 charset (#11149 - @mcculls - thanks @saravadeo for the contribution!)
- ✨ Add support for windows-style path (backslashes) (#11073 - @jpbempel)
Metrics
- ✨ Report dropped stats aggregates in health metrics (#11231 - @amarziali)
- ✨ Upgrade jmxfetch dependency to 0.52.0 (#11127 - @mcculls)
- ✨ Upgrade java-dogstatsd-client dependency to 4.4.5 (#11126 - @mcculls)
OpenFeature
- 💡 Add flag evaluation metrics via OTel counter and OpenFeature Hook (#11040 - @typotter)
- ✨ Refine variant reason computation to include SPLIT and STATIC (#11037 - @typotter)
- 🐛 Strictly check variant types in Flag Evaluations (#11036 - @typotter)
Profiling
- ✨ Bump Java profiler library to 1.42.0 (#11222 - @jbachorik)
- (subsumes) Bump Java profiler library to 1.41.0 (#11169 - @jbachorik)
Telemetry
- ✨ Remove noise at boostrap due to telemetry failures (#11218 - @amarziali)
Testing
- 🧹 Migrate OtlpWriterCombinedTest from groovy to junit (#11245 - @mtoffl01)
- ✨ Improve trace assert API (#11209 - @PerfectSlayer)
- 🐛⚡ Improve instrumentation JUnit testing (#11096 - @PerfectSlayer)
- ✨ Improve Config JUnit extension (#11094 - @PerfectSlayer)
- ✨ Add Config and Context JUnit extensions (#11076 - @PerfectSlayer)
- ✨ Update Spock Tests to run with
STRICT_TESTmode by default (#11032 - @mhlidd)
Trace context propagation
- 🐛🔐 Add items and bytes limits to baggage extraction (#11265 - @PerfectSlayer)
- 💡 Add Sofa RPC instrumentation (Bolt, H2C, REST, Triple) (#11135 - @ValentinZakharov)
- 🐛 Preload scope classes to prevent virtual thread deadlock (#11111 - @PerfectSlayer)
Tracer core
- 🐛 Fix peer IP tags in Jetty/Dropwizard (#11237 - @smola)
- ✨ Use ParentBasedAlwaysOnSampler by default when OTLP traces export is enabled (#11225 - @mtoffl01)
- ✨ Introduce a generic JavaModuleOpener for JPMS (#11220 - @amarziali)
- ✨ Allow mapping process tags from env or sysprops (#11204 - @amarziali)
- ✨ Add OtlpWriter for OTLP traces export (#11200 - @mtoffl01)
- 🐛 Add support double quotes as a single token in SQLNormalizer (#11197 - @Eldolfin)
- 🐛 Fix NPE in PayloadDispatcherImpl (#11196 - @amarziali)
- 🐛 Widen info state hashing catch (#11192 - @amarziali)
- ✨ Add classloader exclusions for drools generated classes (#11191 - @amarziali)
- 🐛 🪞 10671 - Fix platform-dependent String.getBytes() calls to use explicit UTF-8 charset (#11149 - @mcculls - thanks @saravadeo for the contribution!)
- 🐛 Abort on IBMJ9's
keytool(#11133 - @bric3) - ✨ Upgrade byte-buddy dependency to 1.18.8 (#11128 - @mcculls)
- ✨⚡ Cache span.kind as byte ordinal for fast isOutbound() (#11116 - @dougqh)
- 🐛 Fix container ID parsing for cgroup v1 in EKS-Fargate (#11110 - @vandonr)
- ✨ Optimize PendingTrace span registration and time tracking (#11078 - @bm1549)
- 🐛 Fix _dd.p.ksr formatting to use 6 decimal places (#11068 - @bm1549)
- ✨ Efficient Trace Payload Protocol (v1 protocol) (#10801 - @AlexeyKuznetsov-DD)
Instrumentations
Apache Spark instrumentation
- ✨ Add spark.openlineage.appName tag to spark.application spans (#11246 - @aboitreaud)
- 🐛 Fall back to jobGroupId when jobRunId equals taskRunId (#11199 - @aboitreaud)
- ✨ Instrument QueryExecution.assertAnalyzed() to catch DataFrame analysis failures (#11033 - @aboitreaud)
AWS SDK instrumentation
Core Java language instrumentation
- 🐛 Preload scope classes to prevent virtual thread deadlock (#11111 - @PerfectSlayer)
- ✨ Add a jpms opener for HostNameResolver cache (#11095 - @amarziali)
Jetty instrumentation
Kafka instrumentation
- ✨ Add Kafka cluster ID and offset tags to producer/consumer spans (#11107 - @piochelepiotr)
OpenTelemetry instrumentation
- 🐛 Correctly export overflow histogram bucket over OTLP (#11261 - @mcculls)
- 💡 Support sending OpenTelemetry logs over OTLP (http/protobuf) (#11253 - @mcculls)
- 🐛⚡ Miscellaneous OpenTelemetry Metrics fixes (#11240 - @mcculls)
- 💡 Implement OpenTelemetry Logs API (#11224 - @mcculls)
- 💡 Add telemetry attributes to OTLP payloads (#11125 - @mcculls)
- 💡 Provide optimized writers for OpenTelemetry's "trace.proto" wire protocol (#11120 - @mcculls)
Sofa RPC
- 💡 Add Sofa RPC instrumentation (Bolt, H2C, REST, Triple) (#11135 - @ValentinZakharov)
1.61.1
Instrumentations
Core Java language instrumentation
- 🐛 Preload scope classes to prevent virtual thread deadlock (#11131 - @PerfectSlayer)
1.61.0
Warning
This version contains a known regression that can cause application hangs when virtual threads are used heavily at startup, on JDK versions from 21+ up to January 2025. If you use virtual threads, please upgrade to the latest version.
Components
Application Security Management (IAST)
- 🐛 Skip XSS check for freemarker built-in escaping expressions in 2.3.24 instrumentation (#10865 - @jandro996)
Application Security Management (WAF)
- ✨ Add server.request.body.filenames support for Tomcat and Netty 4.1 (#10973 - @jandro996)
- ✨ Add server.request.body.filenames AppSec address for commons-fileupload (#10949 - @jandro996)
- ✨🧪 Return AI Guard SDS findings into SDK Response (#10821 - @obordeau)
- 🐛 Fix ObjectIntrospection exposing JDK internal toString() to the WAF (#10820 - @jandro996)
- ✨ Honor in-app blocking settings by default in AI Guard evaluate (#10818 - @smola)
- 🐛 Fix HttpEndpointPostProcessor incorrectly overwriting span resource name (#10754 - @jandro996)
- ✨ Add http.status_code, error, and http.useragent to inferred proxy spans (#10749 - @jandro996)
- 🐛 Fix content-type extraction for akka-http (#10742 - @jandro996)
- ✨🧪 Attach SDS findings to ai_guard spans (#10721 - @obordeau)
- 🐛 Fix missing http.response.headers.content-type span tag on blocking responses (#10711 - @jandro996)
- 🐛 Fix AWS API Gateway endpoints correlation HTTP span tags - Inferred Proxy Spans (#10561 - @jandro996)
Configuration
- ✨ Guarantee OTel Configs to run through
ConfigHelper(#11057 - @mhlidd) - ✨ Update
supported-configurations.jsonw/ Missing Configs (#11046 - @mhlidd) - ✨ Update JUnit Tests to run with
STRICT_TESTmode by default (#11045 - @mhlidd) - ✨ Update
ConfigHelperto throw error inSTRICT_TESTmode and capture undocumented Configs (#11031 - @mhlidd)
Continuous Integration Visibility
- 🐛 Include all candidate paths for duplicate keys in coverage reports (#10997 - @daniel-mohedano)
- ✨ Implement configuration error tagging for all backend requests (#10963 - @daniel-mohedano)
- 🐛 Fix Test Management telemetry (#10962 - @daniel-mohedano)
- ✨ Add support for Weaver 0.12 release (#10903 - @daniel-mohedano)
- ✨ Consider empty parameters as null in TestIdentifier creation (#10902 - @daniel-mohedano)
- ✨ Add error tag for library configuration request (#10856 - @daniel-mohedano)
- ✨ Add Java 26 support to CI Visibility (#10839 - @daniel-mohedano)
- ✨⚡ Use HashingUtils hash in CI Visibility (#10784 - @dougqh)
Crash Tracking
- ✨ Feature flag crashtracking extended info, and improve runtime args filtering (#11048 - @bric3)
- 🐛 Unset
ld_preloadanddyld_insert_librariesfor crashtracker child JVM (#11041 - @gyuheon0h) - ✨ Report JVM argument flags for crash tracking (#11013 - @bric3)
- ✨ Reports loaded libraries in crashtracking reports (#11000 - @bric3)
- 🐛✨ Add crashtracking addresses and error thread name (#10984 - @bric3)
- ✨ Properly handle OpenJ9 crash report (#10976 - @bric3)
- 🐛 Fix crashtracking siginfo missed some information (#10907 - @bric3)
- 🐛 Change error tracking crashtracker source (#10848 - @amarziali)
- 🐛 Unset inherited JVM env vars in crashtracking scripts (#10819 - @jbachorik)
Database Monitoring
- 🐛 Fix Oracle DBM trace correlation (#10829 - @azhou-datadog)
Dynamic Instrumentation
- 🐛 Fix NullPointerException in ExceptionProbe (#11051 - @jpbempel)
- 🐛 Fix NullPointerException in Fingerprinter (#11049 - @jpbempel)
- 🐛 Fix capture limit for capture expressions (#11042 - @jpbempel)
- 🐛 Fix CodeOrigin for interface endpoints (#11017 - @jpbempel)
- ✨ Optimize Lambda proxy class matching on filtering (#10905 - @jpbempel)
- 🐛 Fix Kotlin fake source mapping (#10880 - @jpbempel)
- 🐛 Fix NullPointerException in SymbolExtractor (#10858 - @jpbempel)
- 🐛 Handle exception from retrieving git info (#10853 - @jpbempel)
- 🐛 Change MethodParameters detection reporting (#10849 - @jpbempel)
- 🐛 Prevent retransforming record with type annotation (#10824 - @jpbempel)
- 🐛 Prevent instrumenting debugger agent classes (#10803 - @jpbempel)
- 🐛 Catch exception from detecting MethodParameters (#10779 - @jpbempel)
- 🐛 Prevent instrumenting first line of a constructor (#10772 - @jpbempel)
- 🐛 Catch exceptions in registerSourceFile (#10752 - @jpbempel)
- 🐛 Use SpringVersion to detect MethodParameters usage (#10750 - @jpbempel)
- 🐛 Fix Spring detection (#10740 - @jpbempel)
- 🐛 Add an error sampler for Log probes (#10638 - @jpbempel)
Logs Product
ML Observability (LLMObs)
- ✨ Propagate global dd_tags to LLMObs span tags (#10978 - @ygree)
- 🐛 Fix openai-java payload mapping for responses, tool metadata, and prompt tracking (#10644 - @ygree)
Metrics
- ✨ Add GitCommitSha to the client stats (#10833 - @amarziali)
- 🐛 Report gRPC status code in client-computed stats (#10805 - @bric3)
- ✨⚡ Reduce memory allocation from client-side stats (#10705 - @dougqh)
- ✨ Reduce verbosity of StatsD connection errors (#10618 - @PerfectSlayer)
OpenFeature
- 🐛 Allow null targeting key for static and rule-only flags (#10990 - @leoromanovsky)
Platform
- ✨ Add HTTP component API module (#10770 - @PerfectSlayer)
Profiling
- ✨ Enable live heap profiling by default on safe JVM versions (#11039 - @jbachorik)
- ✨ Update Java profiler library to 1.40.1 (#10995 - @jbachorik)
- ✨ Remove experimental jvmti wallclock profiler (#10872 - @zhengyu123)
Telemetry
- ✨ Update Environment Variable Normalization to not add DD prefix for OTel Configs (#11044 - @mhlidd)
- 🐛 Report dd-java-agent itself as a Maven dependency in SCA telemetry (#10975 - @jandro996)
- ✨ Add stable session ID headers to telemetry requests (#10914 - @khanayan123)
- ✨ Update Telemetry Key Normalization to Use Environment Variables (#10823 - @mhlidd)
- ✨⚡ Replace Objects.hash with HashingUtils.hash in telemetry (#10813 - @dougqh)
- ✨⚡ Reduce allocation overhead of ExceptionLogger / LogCollector (#10684 - @dougqh)
Testing
- ✨ Update JUnit Tests to run with
STRICT_TESTmode by default (#11045 - @mhlidd) - 🐛 Fix final_status workaround (#10852 - @cbeauchesne)
- 🧹 Refactor tests following Java migration (#10733 - @jpbempel)
Trace context propagation
- 🐛 Improve VirtualThread context tracking instrumentation (#11009 - @PerfectSlayer)
- 🐛 Fix VirtualThread support on multiple unmount/remount cycles (#10931 - @PerfectSlayer)
Tracer core
- ✨ Use TagMap.set in CoreTracer tracer tags (#11004 - @dougqh)
- ✨⚡ Replace interceptors ConcurrentSkipListSet with priority ordered copy on write "list" (#11002 - @dougqh)
- ✨⚡ Cache Tracer Host Entry to reduce allocation in RemoteHostnameAdder (#10968 - @dougqh)
- ✨ Add ObjectInputStream.readObject to forbidden apis (#10952 - @dougqh)
- ✨ Add ParentBasedAlwaysOnSampler as default sampler for OTLP trace export mode (#10915 - @mtoffl01)
- 🐛 Handle the case the info response does not contain endpoints / empty (#10838 - @amarziali)
- ✨⚡ Use forEach to avoid Iterator allocation (#10830 - @dougqh)
- ✨⚡ Avoid ArrayList copying from TraceInterceptors (#10828 - @dougqh)
- ✨⚡ Avoid creation of empty CopyOnWriteArrayList for span links (#10822 - @dougqh)
- ✨ Update BaseHash when process tags are updated (#10809 - @amarziali)
- ✨ Add _dd.p.ksr propagated tag for Knuth sampling rate (#10802 - @bm1549)
- ✨ Add capped sampling rate increases (#10715 - @raphaelgavache)
- ✨⚡ Avoid boxing by using TagMap.set in PayloadTagsProcessor (#10964 - @dougqh)
- ✨🧪 Add tracing support for native method calls via Java FFM API (#10718 - @amarziali)
Tracer internal logging
Instrumentations
Apache Spark instrumentation
- 🐛 Fix EMR Spark support by using Seq instead of ArrayBuffer for externalAccums (#10987 - @aboitreaud)
- 🐛 Fix spark application spans status on sql analysis failure (#10981 - @aboitreaud)
- 🐛 Fix sql plan nodes order causing test flakiness (#10911 - @aboitreaud)
- 🐛 Fix flaky test assertion by normalizing column ref and plan_id num (#10757 - @aboitreaud)
- ✨ Capture time app-related metrics for launchers (#10708 - @aboitreaud)
- 🐛 Remove Wrong Spark Spans for Inactive Databricks Clusters (#10651 - @larakulkarni1)
- ✨ Store accumulator-stage lookups directly (#10645 - @charlesmyu)
- ✨ Track external accumulators in tracer instead of using SparkInfo values (#10553 - @charlesmyu)
Armeria Instrumentation
AWS SDK instrumentation
Core Java language instrumentation
- 🐛 Improve VirtualThread context tracking instrumentation (#11009 - @PerfectSlayer)
- 🐛 Fix VirtualThread support on multiple unmount/remount cycles (#10931 - @PerfectSlayer)
- 🧹 Disable outdated RMI instrumentation (#10897 - @PerfectSlayer)
- 🐛🔐 Use primitive types for RMI context payload serialization (#10935 - @PerfectSlayer)
- ✨ Mute tracing for a...
1.60.4
Important
This release fixes a possibility of profiler deadlocking a thread if a library intercepting SIGSEGV is present
Components
Profiling
- 🐛 Update Java profiler library to 1.40.1 (#11012 - @jbachorik)
1.60.3
Announcement
Important
This release fixes CVE-2026-33728.
Components
Continuous Integration Visibility
- ✨ Add Java 26 support to CI Visibility (#10929 - @daniel-mohedano)
Profiling
- ✨ Update Java profiler library to 1.40.0 (#10932 - @jbachorik)
Instrumentations
RMI
- 🐛🔐 Use primitive types for RMI context payload serialization (#10937 - @PerfectSlayer)
1.60.2
Components
Application Security Management (WAF)
- 🐛 Add http.response.headers.content-type span tag on blocking responses (#10884 - @jandro996)
- 🐛 Fix ObjectIntrospection exposing JDK internal toString() to the WAF (#10882 - @jandro996)
Profiling
- ✨ Update Java profiler library to 1.39.0 (#10869 - @jbachorik) (contains also 1.38.0)
1.60.1
Instrumentations
OpenTelemetry instrumentation
- 🐛 Restore OpenTelemetry instrumentation library support. (#10738 - @bric3)
1.60.0
Known Bugs
Warning
This version broke the OpenTelemetry instrumentation library support.
If you use this feature, please upgrade to the latest version.
Components
Application Security Management (WAF)
- 🐛 Forbidden attempt to set different raw URI for given request context - issue #10700 (#10709 - @jandro996)
- ✨🧪 Set sampling decision maker for AI Guard (#10702 - @smola)
- 🐛 Always collect response headers in span when AppSec is enabled (#10648 - @jandro996)
- ✨ Force manual keep of traces for AI Guard (#10625 - @smola)
- 🐛 Optimize AppSecRequestContext numeric conversion to eliminate exceptions on hot path (#10520 - @jandro996)
- ✨ Improve API Security sampling when tracers lack HTTP routes(#10424 - @jandro996)
- ✨ HTTP Endpoint Inference for Trace Resource Renaming (#10393 - @jandro996)
Configuration
Continuous Integration Visibility
- 🐛 Fix usage of deprecated field in AndroidGradleUtils (#10710 - @daniel-mohedano)
- 🧹 Refactor execution policies (#10676 - @daniel-mohedano)
- ✨ Add display name as parameter in JUnit5 dynamic tests (#10649 - @daniel-mohedano)
- ✨ Avoid computing merge base for PR info in DDCI legacy mode (#10624 - @daniel-mohedano)
- ✨⚡ Saving buildGitInfo lambda into a member variable (#10615 - @dougqh)
- ✨ Implement early exit for retry mechanisms (#10604 - @daniel-mohedano)
- 🐛 Validate path traversals in repo root (#10568 - @daniel-mohedano)
- ✨ Introduce pagination support for known tests API (#10536 - @daniel-mohedano)
- ✨ Create final status tag on test events (#10528 - @daniel-mohedano)
- ✨ Fix Job URL format for Github Actions (#10514 - @daniel-mohedano)
- ✨ Improve git security settings (#10486 - @daniel-mohedano)
Crash Tracking
- ✨ Preserve the function relative address when parsing a crash (#10544 - @amarziali)
- ✨ Add J9/OpenJ9 crash tracking support (#10496 - @jbachorik)
- ✨ Improve crashtracking payload and add build_id and relative address (#10469 - @amarziali)
Data Streams Monitoring
Database Monitoring
Dynamic Instrumentation
- 🐛 Fix race condition for Failed Test Replay (#10679 - @daniel-mohedano)
- 🐛 Fix Windows path parsing in JarScanner (#10664 - @tylfin)
- ✨ Refactor to store samplers inside probes (#10605 - @jpbempel)
- 🐛 Fix SymDB jar processing (#10592 - @jpbempel)
- ✨ Send debugger logs to DEBUGGER track (#10585 - @jpbempel)
- 🐛 Fix Capture Expression on primitives (#10549 - @jpbempel)
- 🐛 Add rate limit on span decoration probe errors (#10529 - @jpbempel)
- 🐛 Fix method parameters JVM bug (#10521 - @jpbempel)
- 🐛 Fix Capture Expressions support for multi-probes (#10519 - @jpbempel)
- 🐛 Fix Exception Replay in Lambda (#10505 - @jpbempel)
Profiling
- ✨ Bump aircompressor to 2.0.3 (#10673 - @jbachorik)
- 🐛 Disable jdk.CPUTimeSample when ddprof handles CPU profiling (#10634 - @jbachorik)
- ✨ Add JFR scrubbing before profile upload (#10577 - @jbachorik)
Trace context propagation
Tracer core
- ✨ Add manual service name source (#10704 - @amarziali)
- 🐛 Do not remove the version tag if manually set (#10703 - @amarziali)
- 🧹 Upgrade to jctools 4.0.6 (#10691 - @amarziali)
- ✨ Refine service name sources for configuration options (#10658 - @amarziali)
- ✨ Add service name source to trace stats (#10653 - @amarziali)
- ✨⚡ Creating HashingUtils as alternative to Objects.hash (#10628 - @dougqh)
- ✨ Track service name source (#10607 - @amarziali)
- 🐛 Make MemFDUnixWriterFFM compatible with early SegmentAllocator jdk implementations (#10602 - @amarziali)
- ⚡🧹 Remove use of AtomicReferenceArray in RadixTreeCache (#10600 - @mcculls)
- ✨ Propagate response body in case of non 200 status code. (#10593 - @AlexeyKuznetsov-DD)
- ✨ Update
jnr-unixsocketdependency to 0.38.24 (#10565 - @mcculls) - 🐛 Avoid potential
ConcurrentModificationExceptioninTunnelingJdkSocket(#10564 - @mcculls) - ✨ Add primitive versions of setMetric to DDSpanContext (#10516 - @dougqh)
- ✨⚡ Reuse SpanKind Entry in ClientDecorator (#10503 - @dougqh)
- ✨⚡ Reducing Allocation from GitInfo (#10498 - @dougqh)
- ✨⚡ Caching the primaryInstrumentationName (#10477 - @dougqh)
- ✨⚡ Adds methods for setting TagMap.Entry directly on AgentSpan/DDSpan (#10472 - @dougqh)
- 🐛 Remove RadixTreeCache for int status and protect httpStatus short cache (#10236 - @amarziali)
Tracer internal logging
Instrumentations
Apache Spark instrumentation
- ✨ Spark instrumentation: capture emr step id when spark runs as EMR step (#10670 - @aboitreaud)
- ✨ Initial spark launcher instrumentation (#10629 - @aboitreaud)
AWS Lambda instrumentation
Core Java language instrumentation
- 🐛 Fixed issue with recursive calls which can cause StackOverflowError. (#10535 - @AlexeyKuznetsov-DD)
- ✨⚡ Reuse TagMap.Entry objects in BaseDecorator (#10501 - @dougqh)
JDBC instrumentation
JMS instrumentation
Netty instrumentation
- 🐛 Track server context in netty4 instrumentation (#10556 - @mcculls)
- 🐛 Track server context in netty3 instrumentation (#10555 - @mcculls)
OpenTelemetry instrumentation
- ✨ Add DD_OTLP_METRICS_COMPRESSION setting and map OTel env-vars to it (#10680 - @mcculls)
- 💡 Implement OpenTelemetry Observable Metrics API (#10631 - @mcculls)
- 💡 Adjust OpenTelemetry metrics temporality according to global preference and instrument type (#10545 - @mcculls)
- 💡 Add support for
otel.java.metrics.cardinality.limitsystem property (#10541 - @mcculls) - 💡 Implement OpenTelemetry meter storage and aggregations (#10534 - @mcculls)
Play Framework instrumentation
Servlet instrumentation
- 🐛 Combine dispatch span with request context in generic Servlet3 advice (#10557 - @mcculls)
- ✨⚡ Reuse TagMap.Entry objects in BaseDecorator (#10501 - @dougqh)
- ✨⚡ Extracting span kind & language into static TagMap.Entry objects (#10495 - @dougqh)
- ✨⚡ Caching the primaryInstrumentationName (#10477 - @dougqh)
Synapse Instrumentation
- ✨ Fix Synapse passthru spans finishing before status code is available (#10478 - @ValentinZakharov)
1.59.0
Breaking Changes
Note
Manually overriding a sampling decision now always overrides the decision maker tag for future distributed trace propagation.
Components
Application Security Management (WAF)
- ✨🧪 Add support for content parts and image URLs in AI Guard (#10449 - @smola)
- ✨ Analyze okhttp client redirections as separated request (#10252 - @manuel-alvarez-alvarez)
Continuous Integration Visibility
- ✨ Use component as framework tag in manual API (#10313 - @daniel-mohedano)
Crash Tracking
- ✨ Strip temp suffix from known library names (#10335 - @amarziali)
Data Streams Monitoring
- 🐛 Avoid NPE on DSM context extraction (#10491 - @amarziali)
- 🐛 Fix DSM queue names with Kafka Connect IBM MQ connectors (#10318 - @johannbotha)
- ✨ Initial version of transactions tracking implementation for DSM (#9899 - @kr-igor)
Dynamic Instrumentation
- 🐛 Fix SymDB startup (#10493 - @jpbempel)
- ✨ Enable Code Origin by default for JDK21+ (#10468 - @jpbempel)
- 🐛 Avoid throwing exception for invalid modifiers (#10458 - @jpbempel)
- 🐛 Fix SymDB when processing corrupted jars (#10453 - @jpbempel)
- ✨ Add support of Kotlin's SourceDebugExtension (#10448 - @jpbempel)
- 🐛 Fix debugger start when endpoints aren't available (#10401 - @jpbempel)
- 🐛 Fix NullPointerException when scope failure (#10333 - @jpbempel)
- 🐛 Fix exceptions raised from Collection values (#10322 - @jpbempel)
- 🐛 fix NullPointerException in ClassesToRetransformFinder (#10316 - @jpbempel)
- 🐛 Fix ArrayOutOfBoundsException in ER sanity checks (#10314 - @jpbempel)
- 🐛 fix Capture Expressions for line probes (#10303 - @jpbempel)
Library Injection
ML Observability (LLMObs)
- 🐛 Fix LLMObs trace batching and payload size telemetry (#10395 - @ygree)
- 🐛 Avoid sending empty payloads to the LLMObs endpoint (#10372 - @ygree)
- 💡 Add openai-java v3.0+ instrumentation (#9959 - @ygree)
Metrics
- 🧹 Extract metrics from communication (#10399 - @PerfectSlayer)
OpenFeature
- 🐛 Add test case for OF.7: empty targeting key compliance (#10445 - @leoromanovsky)
- 🐛 Bump OpenFeature SDK to 1.20.1 (#10438 - @leoromanovsky)
- 🐛 Fix ISO 8601 date parsing to support variable precision (#10419 - @leoromanovsky)
Profiling
- ✨ Bump ddprof to 1.37.0 (#10487 - @jbachorik)
(see DataDog/java-profiler@v_1.34.4...v_1.37.0 for details) - 🐛 Should not access the thread states of none Java threads by @zhengyu123 in DataDog/java-profiler#346
- 🐛 Add alignment checks to NativeFunc mark methods by @jbachorik in DataDog/java-profiler#348
- ✨ Log profiler flare messages at WARN level (#10444 - @jbachorik)
- 🐛 Allow running wallclock profiler even without tracer (#10298 - @jbachorik)
Trace context propagation
Tracer core
- ✨ Add process tags related to service naming (#10480 - @amarziali)
- ✨⚡ Avoid primitive boxing in v0.5 serializer (#10471 - @dougqh)
- ✨ Add safety check for TargetSystem encoding limits (#10451 - @amarziali)
- ✨ Compute basehash without allocating a stringbuilder (#10411 - @vandonr)
- ✨⚡ Avoid primitive boxing in v0.4 serializer (#10408 - @dougqh)
- ✨ Introduce @AppliesOn to override advices InstrumenterModule target system (#10404 - @amarziali)
- ✨⚡ Introducing TagMap EntryReader (#10339 - @dougqh)
- 🐛 Ledger.reset should reset containsRemoval status (#10338 - @dougqh)
- ✨ Service discovery: defer FFM methodhandles resolutions (#10312 - @amarziali)
- ✨ Use pure FFM to write on service discovery memfd from java 22 (#10295 - @amarziali)
- ✨⚡ Enabling optimized map by default (#10016 - @dougqh)
- ✨ Replace JCTools queues with VarHandle-based implementations for Java 25+ (#9896 - @amarziali)
Tracer internal logging
Instrumentations
Eclipse Vert.x instrumentation
GraphQL instrumentation
- 🐛 Add Custom Exception Handler to Unwrap
CompletionExceptionfor GraphQL Instrumentations (#10389 - @mhlidd)
Kafka instrumentation
- 🐛 Fix missing consumer_group and topic tags in DSM Kafka 3.8+ metrics (#10464 - @johannbotha)
- ✨ Use WithTypeStructure to check declaresField (#10307 - @amarziali)
WebSocket Instrumentation
All other instrumentations
- 🧹 Move pure context tracking instrumenter to InstrumenterModule.ContexTracking (#10425 - @amarziali)
- 🐛 Avoid duplicate headers when injecting on java.net http client (#10315 - @amarziali)
- ✨ CICS tracing (#10301 - @deejgregor - thanks for the contribution!)
- 🐛 Avoid null store put on Ignite instrumentation (#10291 - @amarziali)
- 💡 Add openai-java v3.0+ instrumentation (#9959 - @ygree)