0.49.0
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 theDD_REQUESTS_SERVICEenvironment variable.
Upgrade Notes
- Support for aiohttp previous to 2.0 has been removed.
- Support for deprecated
DD_PROFILING_API_URLenvironment variable has been removed. UseDD_SITEinstead. - Support for deprecated
DD_PROFILING_API_KEYenvironment variable has been removed. UseDD_API_KEYinstead. - 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_dictshas been removed.
Deprecation Notes
-
Context.cloneis deprecated. It will not be required in 0.50. -
Context.add_spanis deprecated and will be removed in 0.50. -
Context.add_spanis deprecated and will be removed in 0.50. -
Context.close_spanis deprecated and will be removed in 0.50. -
Context.get_current_spanis deprecated and will be removed in 0.50 please useTracer.current_spaninstead. -
Context.get_current_root_spanis deprecated and will be removed in 0.50 please useTracer.current_root_spaninstead. -
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.compathas been deprecated and will be removed from the public API in ddtrace version 1.0.0. -
Deprecate
ddtrace.config.dbapi2as default forTracedCursorandTracedConnectionas well asDD_DBAPI2_TRACE_FETCH_METHODS. UseIntegrationConfigandDD_<INTEGRATION>_TRACE_FETCH_METHODSspecific 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.encodinghas been deprecated and will be removed in version 1.0.0. -
The
ddtrace.httpmodule has been deprecated and will be removed in version 1.0.0, with theddtrace.http.headersmodule now merged intoddtrace.trace_utils. -
The
collect_metricsargument of thetracer.configuremethod has been deprecated. Runtime metrics should be enabled only via theDD_RUNTIME_METRICS_ENABLEDenvironment 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 publishcp27-winwheels. - 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
urllib3patching 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_TRACINGto enable distributed tracing for bottle. - The
attrslibrary 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
geventworker class has been added. - Added environment variable
DD_FALCON_DISTRIBUTED_TRACINGto 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_TRACINGto enable distributed tracing for pylons. - Update
pymemcachetest suite to test latest versions. - Added
config.pyramid.distributed_tracingsetting to integration config for pyramid. - Removed
ddtrace.ext.AppTypesand its usages in the tracer library. - The
ddtrace.payloadsubmodule has been removed. - Added environment variable
DD_TORNADO_DISTRIBUTED_TRACINGto enable distributed tracing for tornado.