Upgrade Notes
-
Profiling
- Upgrades
echion
, improving the performance of stack sampler by replacing proc filesystem reads withclock_gettime()
. - Upgrades
echion
, improving the performance of the stack sampler by reusing memory and reducing the frequency of memory allocation.
- Upgrades
-
Tracing
- Sampling formula updated to have the same as the one in the agent and other tracers.
New Features
- LLM Observability
- Introduces support for submitting custom evaluations to LLM Observability via agent proxy mode.
Bug Fixes
-
LLM Observability
- Resolves an issue where annotating
session_id
on a LLM Observability span viaLLMObs.annotate/annotation_context()
as a tag only set it as a tag on the span, but did not update the span's actual session ID value.
- Resolves an issue where annotating
-
Profiling
- Reduces the overhead of running the new stack-v2 sampling mechanism via adaptive sampling.
- Upgrades echion to pick up fixes which enables the stack sampler to avoid extra calls to
process_vm_readv()
syscalls for Python frame objects for Python versions 3.11+. - Reduces overhead of the v2 stack sampler by removing unnecessary and expensive utf-8 validation
- Reduces the overhead of code provenance reporting when stack v2 is enabled, the default stack sampler.
- For CPython 3.10+, code provenance correctly classifies frozen modules in Python stdlib when stack v2 is enabled, the default stack sampler.
- Upgrades
echion
to pick up a fix which resolves a potential crash. The stack sampler could read off of an empty queue of frames after failing to resolve specific frame information, triggering undefined behavior.
-
Tracing
- Fixes an issue where the sampling decision was hardcoded to USER_KEEP when extracting sampling priority from HTTP headers, if there was no
x-datadog-sampling-priority
header. The sampling decision is now made using the updated sampling formula.
- Fixes an issue where the sampling decision was hardcoded to USER_KEEP when extracting sampling priority from HTTP headers, if there was no