github DataDog/dd-trace-py v3.3.0rc1
3.3.0rc1

latest release: v2.21.4
pre-release23 hours ago

New Features

  • ASM

    • Introduces new metrics span tags to keep track of truncations of WAF payloads.
    • Introduces support for automatic instrumentation of session monitoring and blocking for Django.
  • LLM Observability

    • Introduces tracing for converse calls to the Bedrock Converse API. converse calls are traced as LLM spans with max_tokens, temperature inference parameters and input/output messages.
    • Avoids submitting spans to LLM Observability when a non-default base URL is detected in request for the Anthropic, Bedrock, LangChain, Open AI, and Azure Open AI integrations.
  • Telemetry

    • SCA: This add support for extended heartbeat every 24h with dependencies payload.
  • Tracing

    • botocore: Introduces capturing prompts, token usage, and inference parameters for converse calls to the Bedrock API.
    • kafka: Adds messaging.destination.name tag to kafka produce and consume spans.
    • runtime_metrics: Adds support for sending runtime metrics as gauge metrics (instead of distributions). To enable this feature set DD_TRACE_EXPERIMENTAL_FEATURES_ENABLED=DD_RUNTIME_METRICS_ENABLED.
    • runtime_metrics: Adds support for tagging runtime metrics with the current runtime ID. To enable tagging, set DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED=True.
    • Includes dynamodb in the default list of cloud services for payload tagging, i.e. DD_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES. Note that cloud services payload tagging feature is still gated by DD_TRACE_CLOUD_REQUEST_PAYLOAD_TAGGING and DD_TRACE_CLOUD_RESPONSE_PAYLOAD_TAGGING.

Bug Fixes

  • LLM Observability

    • Resolves an issue where enabling LLM Observability caused all botocore submodules to be patched instead of only bedrock-runtime.
    • Resolves issue where Pydantic model objects were encoded as unhelpful default placeholder text.
    • Improves encoding of non-JSON serializable I/O objects by attempting to convert to string before resorting to default placeholder text.
  • Tracing

    • dynamic sampling: Ensures that dynamic sampling rates are always consistent with the rates received from the agent via remote configuration. Previously, setting a global sample rate and then sampling rules via remote config would result in both configurations being applied. With this fix only the most recent sampling configuration will be applied.
    • internal: Fixes an issue where trimming a traceback to attach it to the span could result in the loss of the most recent frames.
    • pylibmc: Fixes an issue where using Client(server=[url]) would throw the error __init__() got multiple values for argument 'servers'
    • tags: Updates DD_TAGS parsing to match the Datadog Agent and other SDKs. Key-value pairs can now be separated by both commas and spaces (e.g., DD_TAGS="key1:value1, key2:value2, key3:value3"). This reverts a change introduced in v2.11.0, which only allowed one separator type.
    • sampling: Ensures remote sampling rules no longer overwrite existing samplers, preserving service-based sample rates set by the Agent and ensuring tracer rate limits configured by ddtrace products (e.g., ASM) are always respected.
    • Resolves an issue where trace information, such as span links, baggage, and trace-level tags (ex: sampling decision maker), could be lost when a new process was created while a trace was active.

Other Changes

  • Tracing
    • Ensures a single DatadogSampler is initialized per Tracer instance, improving Tracer object initialization speed by approximately 7% and simplifying sampling logic.
    • agent: Migrates agent connection configurations to envier. This provides better documentation and validation for expected types. The following configuration are affected:
      • DD_TRACE_AGENT_URL
      • DD_DOGSTATSD_URL
      • DD_TRACE_AGENT_HOSTNAME
      • DD_AGENT_HOST
      • DD_TRACE_AGENT_PORT
      • DD_DOGSTATSD_PORT
      • DD_AGENT_PORT
      • DD_TRACE_AGENT_TIMEOUT_SECONDS
        Of the above impacted configurations, these had a precedence change:
      • DD_TRACE_AGENT_HOSTNAME over DD_AGENT_HOST
      • DD_TRACE_AGENT_PORT over DD_AGENT_PORT
      • DD_DOGSTATSD_HOST over DD_AGENT_HOST
      • DD_DOGSTATSD_PORT over DD_AGENT_PORT

Don't miss a new dd-trace-py release

NewReleases is sending notifications on new releases.