Releases: DataDog/dd-trace-py
4.10.5
Bug Fixes
-
tracing: This fix resolves an issue where traces buffered before
os.fork()could be sent twice, once by the parent and once by the child. -
LLM Observability: Resolves an issue where the OpenAI integration recorded unset request parameters (OpenAI SDK's
Omit/NotGivensentinel values) as noise in LLM span metadata. -
profiling: Rare crashes that could happen post-fork in fork-based applications have been fixed.
4.9.3
Bug Fixes
-
tracing: This fix resolves an issue where traces buffered before
os.fork()could be sent twice, once by the parent and once by the child. -
profiling: Rare crashes that could happen post-fork in fork-based applications have been fixed.
4.8.10
Bug Fixes
-
tracing: This fix resolves an issue where traces buffered before
os.fork()could be sent twice, once by the parent and once by the child. -
profiling: Rare crashes that could happen post-fork in fork-based applications have been fixed.
4.11.0rc3
New Features
- LLM Observability: Adds support for
DD_LLMOBS_SAMPLE_RATE, which controls the proportion of LLM Observability spans (between0.0and1.0, defaults to1.0) that are retained. This does not affect APM span retention or the accuracy of LLM Observability metrics such as token usage, and cost.
4.10.4
Bug Fixes
-
LLM Observability: Fixes agentless export dropping data on the
us3,us5,ap1, andap2Datadog sites. This affected customers on these sites when no Datadog Agent was running or agentless export was explicitly enabled (DD_LLMOBS_AGENTLESS_ENABLED=1). -
runtime metrics: Fixes an issue where runtime metrics were missing container and orchestrator tags (such as
pod_name) on hosts using cgroup v2. -
IAST: A crash that could happen at interpreter teardown has been fixed.
-
profiling: A rare crash that could happen after fork in fork-based applications has been fixed.
-
tracing: Fixes a bug where running
ddtrace-runcaused a traceback on keyboard interrupt.
4.9.2
Bug Fixes
-
runtime metrics: Fixes an issue where runtime metrics were missing container and orchestrator tags (such as
pod_name) on hosts using cgroup v2. -
IAST: A crash that could happen at interpreter teardown has been fixed.
-
profiling: A rare crash that could happen after fork in fork-based applications has been fixed.
4.11.0rc2
Upgrade Notes
- LLM Observability: when APM and LLMObs are both enabled, the APM trace writer now uses the
v0.4trace API version (v0.5cannot carry the LLMObs span data). SettingDD_TRACE_API_VERSION=v0.5with LLMObs enabled logs a warning and downgrades tov0.4. No user action is required.
New Features
- LLM Observability: LLM span data can now be exported to the Datadog Agent over the APM trace, and is reliably delivered even when the APM trace is not sampled. This has no effect on APM sampling decisions or billing.
- This change adds the ability to override a manually installed tracer for Single Step Instrumentation. When this is set, all ddtrace packages will be preferred over the user installed packages. For example, wrapt, bytecode, and others. To ensure the injected library takes precedence,
DD_INJECT_EXPERIMENTAL_OVERRIDE_USER_DDTRACE=truecan be added to the environment.
Bug Fixes
- LLM Observability: Fixes agentless export dropping data on the
us3,us5,ap1, andap2Datadog sites. This affected customers on these sites when no Datadog Agent was running or agentless export was explicitly enabled (DD_LLMOBS_AGENTLESS_ENABLED=1).
- tracing: Fixes a race condition where extra service names could be silently dropped from Remote Configuration
/v0.7/configpayloads in multi-threaded applications (e.g. uWSGI).
- code origin: fixed an issue that could have caused pytest to crash internally when inspecting the call stack from an exception thrown by a view function when Code Origin is enabled.
- LLM Observability: Fixes an issue where spans with very large JSON depth nested fields were being submitted but dropped by Datadog. The LLM Observability integration now detects nested fields that exceed the allowed depth and stringifies them, ensuring spans will not be dropped due to JSON depth limits in Datadog.
- IAST: A crash that could happen at interpreter teardown has been fixed.
- protobuf: This fix resolves an issue where Data Streams Monitoring schema tags were missing from protobuf spans due to incorrect patching of generated message classes.
4.8.9
Bug Fixes
- runtime metrics: Fixes an issue where runtime metrics were missing container and orchestrator tags (such as
pod_name) on hosts using cgroup v2.
- code origin: fixed an issue that could have caused pytest to crash internally when inspecting the call stack from an exception thrown by a view function when Code Origin is enabled.
- IAST: A crash that could happen at interpreter teardown has been fixed.
- profiling: A rare crash that could happen after fork in fork-based applications has been fixed.
4.10.3
Bug Fixes
- CI Visibility: fix the default HTTP timeout for backend requests from 15 seconds to 30 seconds, and add the
DD_CIVISIBILITY_BACKEND_API_TIMEOUT_MILLISenvironment variable (previously missing) to override it. The value is expressed in milliseconds (e.g.60000for 60 seconds), consistent with the Java tracer. The same timeout now applies uniformly to all backend requests, including skippable test fetches.
- pydantic_ai: Fixes APM span naming so the operation name is the generic category (
pydantic_ai.tool/pydantic_ai.agent) and the resource name is the specific tool or agent name, matching Datadog APM convention. This restores per-tool and per-agent grouping on APM service and resource pages. LLM Observability views are unaffected.
- sqlalchemy: Fixes duplicate SQLAlchemy event listeners when
trace_engine()is called repeatedly for the same engine.
- LLM Observability: Fixes an issue where spans with very large JSON depth nested fields were being submitted but dropped by Datadog. The LLM Observability integration now detects nested fields that exceed the allowed depth and stringifies them, ensuring spans will not be dropped due to JSON depth limits in Datadog.
4.9.1
Bug Fixes
- AAP: This fix resolves an issue where the AppSec body-parsing hook consumed the
websocket.connectASGI message, causing ASGI/FastAPI WebSocket connections to fail with HTTP 500 w
hen AppSec was enabled.
- CI Visibility: fix the default HTTP timeout for backend requests from 15 seconds to 30 seconds, and add the
DD_CIVISIBILITY_BACKEND_API_TIMEOUT_MILLISenvironment variable (previ
ously missing) to override it. The value is expressed in milliseconds (e.g.60000for 60 seconds), consistent with the Java tracer. The same timeout now applies uniformly to all ba
ckend requests, including skippable test fetches.
- tracing: Fixes a race condition where extra service names could be silently dropped from Remote Configuration
/v0.7/configpayloads in multi-threaded applications (e.g. uWSGI).
- LLM Observability: Fixes an issue where
reasoning_contentwas missing from streamed chat completions in the OpenAI and LiteLLM integrations when an OpenAI-compatible reasoning pr
ovider (e.g. DeepSeek, Qwen) emitteddelta.reasoning_contentchunks. The aggregated message now captures reasoning text in the output message, matching non-streaming behavior.
- Fixed an issue that could have caused some timers, like the one responsible for Symbol Database uploads, to fire repeatedly after the first execution.
- internal: This fix resolves a memory leak where reference cycles through
PeriodicThreadcallbacks were invisible to Python's cyclic garbage collector and could accumulate when th
reads used bound methods as targets.
- profiling: Fixes a memory leak in native frame tracking caused by unbounded native call-site metadata growth.
- SCA: This fix resolves an issue where unresolved runtime reachability targets could accumulate across Software Composition Analysis updates, causing resident memory usage to grow o
ver time.
- sqlalchemy: Fixes duplicate SQLAlchemy event listeners when
trace_engine()is called repeatedly for the same engine.
- dynamic instrumentation: fixes an issue where the Symbol Database uploader sends empty payloads on a recurring timer.
- code origin: fixed an issue that could have caused pytest to crash internally when inspecting the call stack from an exception thrown by a view function when Code Origin is enabled