Skip to content

Releases: DataDog/dd-trace-java

1.61.0

08 Apr 15:11
v1.61.0
aa7c70f

Choose a tag to compare

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.json w/ Missing Configs (#11046 - @mhlidd)
  • ✨ Update JUnit Tests to run with STRICT_TEST mode by default (#11045 - @mhlidd)
  • ✨ Update ConfigHelper to throw error in STRICT_TEST mode and capture undocumented Configs (#11031 - @mhlidd)

Continuous Integration Visibility

Crash Tracking

  • ✨ Feature flag crashtracking extended info, and improve runtime args filtering (#11048 - @bric3)
  • 🐛 Unset ld_preload and dyld_insert_libraries for 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

Dynamic Instrumentation

Logs Product

  • 🐛 Fix check raw file injection smoke test (#10920 - @bm1549)

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

OpenFeature

Platform

Profiling

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

Trace context propagation

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

Armeria Instrumentation

  • 🐛 Report gRPC status code in client-computed stats (#10805 - @bric3)

AWS SDK instrumentation

  • 🐛 Inject APM trace headers into SQS _datadog message attribute on send (#10843 - @ygree)

Core Java language instrumentation

gRPC instrumentation

  • 🐛 Report gRPC status code in client-computed stats (#10805 - @bric3)

JDBC instrumentation

  • 🐛 Avoid IndexOutOfBound when parsing dbInfo without host (#10835 - @ama...
Read more

1.60.4

01 Apr 14:04
v1.60.4
e6fe2ab

Choose a tag to compare

Important

This release fixes a possibility of profiler deadlocking a thread if a library intercepting SIGSEGV is present

Components

Profiling

1.60.3

23 Mar 18:01
v1.60.3
14f1ebb

Choose a tag to compare

Announcement

Important

This release fixes CVE-2026-33728.

Components

Continuous Integration Visibility

Profiling

Instrumentations

RMI

1.60.2

19 Mar 17:11
v1.60.2
428d682

Choose a tag to compare

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

1.60.1

04 Mar 17:58
v1.60.1
d84b442

Choose a tag to compare

Instrumentations

OpenTelemetry instrumentation

1.60.0

03 Mar 10:06
v1.60.0
0f5d84f

Choose a tag to compare

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

  • ✨ Add DD_OTLP_METRICS_COMPRESSION setting and map OTel env-vars to it (#10680 - @mcculls)

Continuous Integration Visibility

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

  • 🐛 Write base hash to current span when injected in DBM comment (#10450 - @vandonr)

Dynamic Instrumentation

Profiling

Trace context propagation

  • ✨⚡ Changing traceSource to volatile rather than an AtomicInteger (#10614 - @dougqh)

Tracer core

Tracer internal logging

Instrumentations

Apache Spark instrumentation

AWS Lambda instrumentation

Core Java language instrumentation

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.limit system 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

1.59.0

02 Feb 14:49
v1.59.0
7e1bb03

Choose a tag to compare

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)

Continuous Integration Visibility

Crash Tracking

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

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

OpenFeature

Profiling

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

  • 🐛 Have Vertx 4.0 prioritize path and fallback to name (#10382 - @mhlidd)

GraphQL instrumentation

  • 🐛 Add Custom Exception Handler to Unwrap CompletionException for GraphQL Instrumentations (#10389 - @mhlidd)

Kafka instrumentation

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

23 Jan 19:13
v1.58.2
0612221

Choose a tag to compare

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

14 Jan 14:33
v1.58.1
55d9235

Choose a tag to compare

Components

Continuous Integration Visibility

Instrumentations

All other instrumentations

1.58.0

06 Jan 10:41
v1.58.0
bd3f6f5

Choose a tag to compare

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)

Data Streams Monitoring

Database Monitoring

  • ✨ Add support for DBM comment injection with MongoDB (#9589 - @Yoone)

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

Instrumentations

Apache Spark instrumentation

Couchbase instrumentation

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

Spring instrumentation

All other instrumentations