Releases: DataDog/dd-trace-java
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
- π Combine play spans with surrounding framework context before attaching them (#10554 - @mcculls)
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
- π
β οΈ Always record force keep decisions for future distributed trace propagation (#10308 - @mcculls)
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)
1.58.2
Known Bugs
Warning
The a bug in the profiler can cause crashes on libmusl. If running on libmusl based distribution, consider not upgrading or, if absolutely unavoidable, use -Ddd.profiling.ddprof.enabled=false to fall back to JFR-only profiling to avoid the possibility of crash.
Components
ML Observability (LLMObs)
- π Fix LLMObs trace batching and payload size telemetry (#10417 - @ygree)
- π Avoid sending empty payloads to the LLMObs endpoint (#10410 - @ygree)
Profiling
1.58.1
Components
Continuous Integration Visibility
- β¨ Use component as framework tag in manual API (#10374 - @daniel-mohedano)
Instrumentations
All other instrumentations
- π Add InstrumenterModule.Tracing for Aerospike (#10373 - @amarziali)
1.58.0
Known Bugs
Warning
The Aerospike instrumentation does not apply in this dd-java-agent release. If you are instrumenting Aerospike, please upgrade to the latest version.
Breaking Changes
Note
We now limit the number of elements processed in Mongo documents (#10277). This only affects unusually long Mongo resource names derived from documents with more than 256 list elements.
Components
Application Security Management (WAF)
- π Fix synchronization of ASM_DD Product listeners (#10226 - @jandro996)
- β¨ Add Security Response ID (#10133 - @jandro996)
Data Streams Monitoring
- π Remove high cardinality tags from Data Streams hashes (#10287 - @piochelepiotr)
Database Monitoring
Dynamic Instrumentation
- πβ‘ Batch re-transformations when there are a high number of inner classes (#10289 - @jpbempel)
- β¨ Add support for Agrona collections (#10235 - @jpbempel)
- β¨ Enable Code Origin by default for JDK25+ (#10234 - @jpbempel)
Tracer core
- β¨ Upgrade to byte-buddy 1.18.3 (#10275 - @mcculls)
- β¨ Force early classloading for PublishState (#10273 - @amarziali)
- β¨β‘ Support creating AOT caches for Spring apps with custom trace interceptors (#10272 - @mcculls)
- π Ensure the class name is valid when enhancing with SerialVersionUIDAdder (#10270 - @amarziali)
- π Silence non-critical PayloadTagsProcessor parsing exception alert (#10263 - @ygree)
Tracer internal logging
- β¨ Support
DD_LOG_FORMAT_JSON(#10223 - @mcculls) - π‘ Add App Logs Collection feature (#10156 - @jpbempel)
Instrumentations
Apache Spark instrumentation
- β¨ Enable Spark Plan metadata parsing by default (#10169 - @charlesmyu)
Couchbase instrumentation
- π Multi-tracing support for Couchbase 3.2+ (#10147 - @ValentinZakharov)
JMS instrumentation
- π Do not break the JMS instrumentation when unable to access a property (#10255 - @amarziali)
MongoDB instrumentation
- π
β οΈ Add a limit to the number of elements we process in a Mongo document (#10277 - @vandonr) - β¨ Add support for DBM comment injection with MongoDB (#9589 - @Yoone)
Servlet instrumentation
- π Protect jsp decorator from NPE (#10250 - @amarziali)
Spring instrumentation
- π Avoid NPE when inspecting spring messaging headers (#10254 - @amarziali)
All other instrumentations
- π Avoid NPE in tomcat classloading instrumentation (#10256 - @amarziali)
1.57.0
Components
Application Security Management (IAST)
- π Fix IllegalFormatConversionException StringModuleImpl#onStringFormat (#9907 - @jandro996)
Application Security Management (WAF)
- π Fix API Security sampling in standalone mode (#10165 - @jandro996)
- β¨ AI Guard - Ensure messages are not modified before span serialization (#10116 - @manuel-alvarez-alvarez)
Build & Tooling
- β¨ Remove native libraries for unsupported environment (#10079 - @PerfectSlayer)
Configuration
- π Using stable config when a security manager is enabled should not prevent tracer startup (#10006 - @amarziali)
Continuous Integration Visibility
- β¨ Add support for Weaver Framework v0.11 (#10012 - @daniel-mohedano)
Crash Tracking
- π Don't send crash-ping to error tracking if not enabled (#10170 - @amarziali)
- β¨ Improve OOM parsing for Zulu8 (#10038 - @amarziali)
- β¨ Store some crashtracking options on initialisation (#10036 - @amarziali)
- β¨ Dual ship to error tracking (#10000 - @amarziali)
Data Streams Monitoring
- π Fix Kafka consumer instrumentation (#10100 - @piochelepiotr)
Dynamic Instrumentation
- π Fix metric expressions with
@return(#10178 - @jpbempel) - π§Ή fix method reference in comment (#10101 - @andreimatei)
- β¨ Make SymbolDB stand alone (#10064 - @jpbempel)
- π Make Code Origin fingerprint map concurrent (#10043 - @jpbempel)
- π Disable CodeOrigin by default (#10027 - @jpbempel)
- πβ‘ Avoid expensive
Class.getMethodcall in code-origin advice (#10019 - @mcculls)
Metrics
- β¨β‘ Avoid getTag overhead in ConflatingMetricsAggregator (#10070 - @amarziali)
- π Only enable client side stats if the host agent is at least 7.65.0 (#10041 - @bric3)
Platform
- β¨ Improve support for virtual thread detection (#9852 - @PerfectSlayer)
Profiling
- β¨ Bump ddprof-java to 1.34.4 (#10097 - @jbachorik)
- π Fix deadlock in dd-task-scheduler (#10096 - @rkennke)
Realtime User Monitoring
- π Filter setContentType headers (#10150 - @amarziali)
- π Prevent any Content-Length header from being set upon injection (#10081 - @amarziali)
Telemetry
- β¨ Don't send OutOfMemoryError to the telemetry (#10211 - @amarziali)
Trace context propagation
- β¨ Add context tracking support for virtual threads (#10040 - @PerfectSlayer)
Tracer core
- β¨ Don't send IO failures to telemetry logs (#10210 - @amarziali)
- π Avoid NPE on BaseDecorator (#10209 - @amarziali)
- β¨β‘ Support
aot_trainingmode to be used when creating AOT caches (#10166 - @mcculls) - β¨β‘ Optimize TagMap lookup & insertion for String literals (#10138 - @dougqh)
- π Remove colons from process tags values (#10109 - @vandonr)
- π Fix field-injection of ForkJoinTask on Java 25 (#10084 - @mcculls)
- β¨β‘ Use
ClassLoaderValues to track class-loader state (#10075 - @mcculls) - β¨β‘ Add primitive setters to DDSpanContext to take advantage of TagMap (#10018 - @dougqh)
- π Safely handle Files.exist on discovery and config when a Security Manager is present (#10009 - @amarziali)
- β¨β‘ Avoid SpanBuilder allocation for startSpan (#9998 - @dougqh)
- β¨ Add request-id to lambda start/end invocation calls (#9991 - @ojproductions)
- β¨β‘ Use
ClassLoaderIndexto index class-loader related information (#9980 - @mcculls) - β‘π§Ή Use
ClassNameFilterto track uninteresting classes (#9976 - @mcculls) - β¨β‘ Reduce PendingTrace Lock Contention (#9932 - @dougqh)
- β¨ Remove dependency on
memfd_createfor service discovery (#9913 - @raphaelgavache)
Instrumentations
Apache Spark instrumentation
- π Support Spark 4.1 by removing mention to StreamExecution class (#10228 - @aboitreaud)
- β¨ Duplicate service name in meta so it's not truncated in spark integration (#10063 - @aboitreaud)
- β¨ Add dd_tags into djm.tags spark.application span attribute (#10004 - @pawel-big-lebowski)
AWS SDK instrumentation
- π‘ Add inject Datadog attribute config (#9943 - @ojproductions)
Core Java language instrumentation
- β¨ Add context tracking support for virtual threads (#10040 - @PerfectSlayer)
JDBC instrumentation
- π Log injection issues in JDBC only once + promote to WARN (#10214 - @vandonr)
- π‘ Add a feature flag to disable extra calls to the DB in JDBC instrumentation (#9774 - @vandonr)
Kafka instrumentation
- π Fix Kafka consumer instrumentation (#10100 - @piochelepiotr)
- π Extract trace context from Kafka producer record headers (#10020 - @PlugaruT - thanks for the contribution!)
Servlet instrumentation
- π Avoid NPE when enumerating servlet headers (#10213 - @amarziali)
Spring instrumentation
- π Make spring-webflux instrumentation compatible with 7.0.0 (#10110 - @amarziali)
All other instrumentations
- π Avoid NPE on QuartzDecorator (#10181 - @amarziali)
- π Avoid NPE when setting resource with null path (#10180 - @amarziali)
- π Fix
VerifyErrorwhen instrumentingorg.apache.synapse.transport.passthru.SourceHandler(#10154 - @mcculls) - π Ensure compatibility with jboss modules 2.2 (#10111 - @amarziali)