Change8

v3.15.0

📦 datadog-sdkView on GitHub →
13 features🐛 14 fixes🔧 22 symbols

Summary

This release introduces significant new observability features across Google ADK, Django (minimal tracing mode), AWS tagging, and LLM Observability enhancements. Numerous bug fixes address stability issues in profiling, exception replay, and CI Visibility metrics.

Migration Steps

  1. If using Django and experiencing high overhead, consider enabling minimal tracing by setting the environment variable `DD_DJANGO_TRACING_MINIMAL=true`.
  2. If using dynamic instrumentation features (snapshots), ensure your Datadog agent version is 7.49.0 or newer.
  3. If you encounter issues with resource naming on web request spans, enable the experimental feature by setting `DD_TRACE_RESOURCE_RENAMING_ENABLED="true"`.

✨ New Features

  • google-adk: Adds APM tracing and LLM Observability support for the Google ADK library (google-adk). Support includes APM tracing and LLM Observability for agent runs, tool calls, and code execution.
  • django: Introduces the `DD_DJANGO_TRACING_MINIMAL` environment variable to disable Django ORM, cache, and template instrumentation while keeping middleware instrumentation enabled for performance-sensitive applications.
  • AWS: adds `aws.partition` tag onto AWS traces based on the region for the boto, botocore, and aiobotocore integrations.
  • AAP: Extends downstream request analysis (API10) to the requests package.
  • dynamic instrumentation/exception replay/code origin for spans: added support for the latest Datadog agent intake for snapshots (requires minimum agent version 7.49.0).
  • CI Visibility: Introduces the env var `DD_CIVISIBILITY_ENABLED` (default True) to allow disabling trace sending to Test Visibility product from test runners.
  • azure_servicebus: Add distributed tracing support for sending batches with Azure Service Bus producers.
  • azure_functions: Use span links to connect Service Bus trigger consumers to the producers that send the messages.
  • tracing: Added support for resource renaming, an experimental feature enabled by setting `DD_TRACE_RESOURCE_RENAMING_ENABLED="true"`, allowing the Datadog platform to adjust the resource field on web request spans.
  • Code Security (IAST): Adds Untrusted Serialization detection displayed on the DataDog Vulnerability Explorer dashboard.
  • Code Security (IAST): Reduces false positives if md5 or sha1 functions have the parameter `usedforsecurity=False`.
  • LLM Observability: Extends the prompt structure to add `tags` and `chat_template`, and a new `Prompt` TypedDict class for annotation and annotation_context.
  • LLM Observability: Datasets & Experiments SDK now has summary evaluators support.

🐛 Bug Fixes

  • CI Visibility: Fixed an issue where the ITR skip count metric incorrectly aggregated skipped tests when skipping level was set to suite; it now counts appropriately based on the ITR skip level.
  • sampling: Prevents `DatadogSampler` recreation upon `SpanAggregator` reset by updating the sampler's rate limiter instead.
  • dynamic instrumentation: Fixed an issue preventing multiple probes on the same location from being instrumented.
  • exception replay: Prevented Celery from crashing when a task raises a custom exception with mandatory arguments.
  • exception replay: Ensures value capture starts from the leaf frame of the innermost exception.
  • tracing: Fixed encoding bytes objects as span attributes by truncating byte strings instead of throwing `PyErr_Format`.
  • AAP: Resolved an issue where the endpoint discovery feature could cause a crash for Flask at startup.
  • AAP: Disabled grpc threat monitoring due to potential false positives.
  • libinjection: Allows python modules executed with `-m` entries in the denylist.
  • profiling: Upgrades echion to resolve segmentation faults occurring on services with many `asyncio.Task`s.
  • profiling: Fixed crash in memory profiling when garbage collection is triggered during sampling of a `PyObject_Realloc` call (accessing freed memory).
  • profiling: Profiling will no longer load if `--skip-atexit` is not set when `--lazy` or `--lazy-apps` is set on uWSGI versions older than 2.0.30, preventing crashes in native extension modules.
  • RemoteConfig: Fixed a `TypeError` in Python 3.13 when creating a shared array with `c_char` type by using the 'c' typecode for better cross-version compatibility.
  • source code integration: Added checks to ensure `DD_GIT_COMMIT_SHA` and `DD_GIT_REPOSITORY_URL` are defined before executing the git command.

🔧 Affected Symbols

google-adkDD_DJANGO_TRACING_MINIMALbotobotocoreaiobotocorerequestsurllibDD_CIVISIBILITY_ENABLEDazure_servicebusazure_functionsDD_TRACE_RESOURCE_RENAMING_ENABLEDDatadogSamplerSpanAggregatorCeleryechionasyncio.TaskPyObject_ReallocuWSGIRemoteConfigc_charDD_GIT_COMMIT_SHADD_GIT_REPOSITORY_URL