github DataDog/dd-trace-py v0.49.0
0.49.0

latest releases: v2.17.0rc1, v2.16.1, v2.14.7...
3 years ago

Release Notes

v0.49.0

Prelude

Several deprecations have been made to Context as we prepare to move active span management out of this class.

New Features

  • The futures integration is now enabled by default.
  • requests: add global config support. This enables the requests service name to be configured with ddtrace.config.requests['service'] or the DD_REQUESTS_SERVICE environment variable.

Upgrade Notes

  • Support for aiohttp previous to 2.0 has been removed.
  • Support for deprecated DD_PROFILING_API_URL environment variable has been removed. Use DD_SITE instead.
  • Support for deprecated DD_PROFILING_API_KEY environment variable has been removed. Use DD_API_KEY instead.
  • Profiling support for agentless mode must now be explicitly enabled.
  • The ddtrace pytest plugin can now label spans from test cases marked xfail with the tag "pytest.result" and the reason for being marked xfail under the tag "pytest.xfail.reason".
  • requests: spans will no longer inherit the service name from the parent.
  • The return value of Span.pprint() has been changed to a single line in the tracer debug logs rather than the previous custom multiline format.
  • Spans are now processed per tracer instance. Formerly spans were stored per-Context which could be shared between tracer instances. Note that context management is not affected. Tracers will still share active spans.
  • Spans from asynchronous executions (asyncio, gevent, tornado) will now be processed and flushed together. Formerly the spans were handled per-task.
  • tracer.write() will no longer have filters applied to the spans passed to it.
  • The function ddtrace.utils.merge_dicts has been removed.

Deprecation Notes

  • Context.clone is deprecated. It will not be required in 0.50.

  • Context.add_span is deprecated and will be removed in 0.50.

  • Context.add_span is deprecated and will be removed in 0.50.

  • Context.close_span is deprecated and will be removed in 0.50.

  • Context.get_current_span is deprecated and will be removed in 0.50 please use Tracer.current_span instead.

  • Context.get_current_root_span is deprecated and will be removed in 0.50 please use Tracer.current_root_span instead.

  • Deprecate the configuration of the analytics through the generic dbapi2 configuration. This should now be configured via integration configurations, for example:

    # Before
    export DD_TRACE_DBAPI2_ANALYTICS_ENABLED=1
    
    # After
    export DD_TRACE_SQLITE3_ANALYTICS_ENABLED=1
    
  • ddtrace.compat has been deprecated and will be removed from the public API in ddtrace version 1.0.0.

  • Deprecate ddtrace.config.dbapi2 as default for TracedCursor and TracedConnection as well as DD_DBAPI2_TRACE_FETCH_METHODS. Use IntegrationConfig and DD_<INTEGRATION>_TRACE_FETCH_METHODS specific to each dbapi-compliant library. For example:

    # Before
    config.dbapi2.trace_fetch_methods = True
    
    # After
    config.psycopg2.trace_fetch_methods = True
    
  • The use of ddtrace.encoding has been deprecated and will be removed in version 1.0.0.

  • The ddtrace.http module has been deprecated and will be removed in version 1.0.0, with the ddtrace.http.headers module now merged into ddtrace.trace_utils.

  • The collect_metrics argument of the tracer.configure method has been deprecated. Runtime metrics should be enabled only via the DD_RUNTIME_METRICS_ENABLED environment variable.

Bug Fixes

  • Fix broken builds for Python 2.7 on windows where <stdint.h> was not available. This change also ensures we build and publish cp27-win wheels.
  • CGroup file parsing was fixed to correctly parse container ID with preceding characters.
  • grpc: handle None values for span tags.
  • grpc: handle no package in fully qualified method
  • grpc: Add done callback in streaming response to avoid unfinished spans if a StopIteration is never raised, as is found in the Google Cloud libraries.
  • grpc: handle IPv6 addresses and no port in target.
  • Fix DD_LOGS_INJECTION incompatibility when using a logging.StrFormatStyle (logging.Formatter(fmt, style="{")) log formatter.
  • Fixed a bug that prevented the right integration name to be used when trying to patch a module on import that is already loaded.
  • Fix urllib3 patching not properly activating the integration.
  • gRPC client spans are now marked as measured by default.
  • Fixes issue of unfinished spans when response is not a grpc.Future but has the same interface, as is the case with the base future class in google-api-core.
  • In certain circumstances, the profiles generated in a uWSGI application could have been empty. This is now fixed and the profiler records correctly the generated events.
  • The default agent timeout for profiling has been restored from 2 to 10 seconds to avoid too many profiles from being dropped.
  • Fix issue with missing traces when using pymemcache.client.hash.HashClient.
  • Added missing pymongo integration configuration, which allows overriding the service name for all the emitted spans.

Other Notes

  • Added environment variable DD_BOTTLE_DISTRIBUTED_TRACING to enable distributed tracing for bottle.
  • The attrs library has been unvendored and is now required as a normal Python dependency with a minimum version requirement of 19.2.0.
  • The six library has been removed from vendor and the system-wide version is being used. It requires version 1.12.0 or later.
  • Documentation on how to use Gunicorn with the gevent worker class has been added.
  • Added environment variable DD_FALCON_DISTRIBUTED_TRACING to enable distributed tracing for falcon.
  • When extracting context information from HTTP headers, a new context is created when the trace ID is either 0 or not available within the headers.
  • Added environment variable DD_PYLONS_DISTRIBUTED_TRACING to enable distributed tracing for pylons.
  • Update pymemcache test suite to test latest versions.
  • Added config.pyramid.distributed_tracing setting to integration config for pyramid.
  • Removed ddtrace.ext.AppTypes and its usages in the tracer library.
  • The ddtrace.payload submodule has been removed.
  • Added environment variable DD_TORNADO_DISTRIBUTED_TRACING to enable distributed tracing for tornado.

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

NewReleases is sending notifications on new releases.