github DataDog/dd-trace-py v1.19.0
1.19.0

latest releases: v2.15.2, v2.14.6, v2.16.0...
13 months ago

Prelude

Vulnerability Management for Code-level (IAST) is now available in private beta. Use the environment variable DD_IAST_ENABLED=True to enable this feature.

New Features

  • Adds the db.row_count tag to redis and other redis-like integrations. The tag represents the number of returned results.
  • CI Visibility: adds test level visibility for unittest
  • ASM: Adds detection of insecure cookie vulnerabilities on responses.
  • ASM: This introduces trusted IPs capabilities in the tracer, to allow specific IPs not to be blocked by ASM but still be monitored.
  • ASM: This introduces a new capability to configure the blocking response of ASM. Users can change the default blocking response behavior or create new custom actions. Configuration of a custom blocking page or payload can still be provided by using DD_APPSEC_HTTP_BLOCKED_TEMPLATE_JSON and DD_APPSEC_HTTP_BLOCKED_TEMPLATE_HTML to change the static files used for the response body. The action block, that can be defined in the static rule file or via remote configuration, allows now to create new custom blocking actions with any status code for the response.
  • The aiopg and aiomysql integrations no longer set the sql.query tag on query spans. This tag duplicated the value captured by the span resource. Users who want to send this query unobfuscated can use the tracer API to set tags on the query span.
  • data_streams: Starts tracking Kafka lag in seconds.
  • kafka: Adds support for the Kafka serializing producer and deserializing consumer.
  • profiling: allow individual collectors to be disabled.
  • tracing: This change introduces the allow_false keyword argument to BaseSampler.sample(), which defaults to True. allow_false controls the function's return value. If allow_false is False, the function will always return True regardless of the sampling decision it made. This is useful when sample is called only for its side effects, which can include setting span tags.

Known Issues

  • There are known issues configuring python's builtin multiprocessing library when ddtrace is installed. To use the multiprocessing library with ddtrace ensure DD_UNLOAD_MODULES_FROM_SITECUSTOMIZE is set to True.
  • When running setup.py extensions with the CMake parameter "-j", it could potentially raise an out-of-memory error. If someone wants to expedite the ddtrace installation, they should manually set the "CMAKE_BUILD_PARALLEL_LEVEL" environment variable.

Bug Fixes

  • ASM: avoid potentially unneeded import of the IAST native module.

  • ASM: avoid potentially unneeded import of the IAST native module if setup doesn't build extensions correctly.

  • data_streams: This fix resolves an issue where data stream context propagation would not propagate via SNS if raw message delivery was enabled.

  • dynamic instrumentation: function duration measurements are now reported in milliseconds to match the expectation from the UI.

  • dynamic instrumentation: fixed an issue that prevented line probes from being injected in some finally blocks.

  • dynamic instrumentation: Fixed the programmatic API to ensure that the dynamic instrumentation service is fully enabled when Dynamic Instrumentation.enable() is called.

  • dynamic instrumentation: fixed a bug that might have caused probe status to fail to update correctly.

  • django: This fix resolves an issue where 'span.resource' would not include the endpoint when a Handler was interrupted, such as in the case of gunicorn worker timeouts.

  • CI Visibility: fixes an issue where the Intelligent Test Runner would not work when in EVP proxy mode due to missing X-Datadog-NeedsAppKey header.

  • CI Visibility: revert to using DD_CIVISIBILITY_ITR_ENABLED (instead of _DISABLED) to conform with other tracers.

  • profiling: fixed a bug that prevented profiles from being correctly correlated to traces in gevent-based applications, thus causing code hotspot and end point data to be missing from the UI.

  • docs: Fix undefined variable reference in otel documentation

  • CI Visibility: fixes that Python 2.7 test results were not visible in UI due to improperly msgpack-ed data

  • ASM: This fix resolves an issue where track_user_signup_event and track_custom_event where not correctly tagging the span. This could lead to the loss of some events in the sampling.

  • appsec: Fixes an issue where ddtrace.appsec is imported and assumed to be available in all deployments of ddtrace

  • lib-inject: This fix resolves an issue where libdl.so.2: cannot open shared object file: No such file or directory errors occurred when the
    injection image started.

  • lib-injection: Resolves permissions errors raised when ddtrace packages are copied from the InitContainer to the shared volume.

  • mariadb: This fix resolves an issue where MariaDB connection information objects not including the user or port caused exceptions to be raised.

  • appsec: This fix resolves an issue in which the library attempted to finalize twice a context object used by the Application Security Management product.

  • propagation: Prevent propagating unsupported non-ascii origin header values.

  • pymongo: This upgrades the PyMongo integration to work with PyMongo versions 4.5.0 and above by choosing the root function of the integration on the basis of the PyMongo version.

  • tracing: This fix resolves an issue where the _dd.p.dm and _dd.*_psr tags were applied to spans in ways that did not match their intended semantics, increasing the potential for metrics-counting bugs.

  • ASM: This fix resolves issue where user information was only set in root span. Now span for user information can be selected.

  • sqlalchemy: sqlalchemy rollbacks could previously cause intermittent deadlocks in some cases. To fix this DD_TRACE_SPAN_AGGREGATOR_RLOCK was introduced in 1.16.2 with the default as False. We are now changing the default to True.

  • kafka: Resolves an issue where traced kafka connections were assigned a default timeout of 1 second. The default timeout in Consumer.poll(...) should be None.

  • openai: This fix resolves an issue where errors during streamed requests resulted in unfinished spans.

Other Changes

  • Adds a get_version method to each integration and updates the basic template for developing an integration to include this method. The get_version method returns the integration's package distribution version and is to be included in the APM Telemetry integrations payload.
  • Add a ddtrace_iast_flask_patch function defined in ddtrace.appsec.iast to ensure that the main Flask app.py file is patched for IAST propagation. This function should be called before the app.run() call. You only need this if you have set DD_IAST_ENABLED=1. Only the main file needs to call this functions, other imported modules are automatically patched.
  • docs: Fixes formatting in ddtrace docs.
  • ASM: Improve default value of regex for query string obfuscation. Rename env var DD_TRACE_OBFUSCATION_QUERY_STRING_PATTERN to DD_TRACE_OBFUSCATION_QUERY_STRING_REGEXP.

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

NewReleases is sending notifications on new releases.