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_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. UseDD_SITE
instead. - Support for deprecated
DD_PROFILING_API_KEY
environment variable has been removed. UseDD_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 useTracer.current_span
instead. -
Context.get_current_root_span
is deprecated and will be removed in 0.50 please useTracer.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 forTracedCursor
andTracedConnection
as well asDD_DBAPI2_TRACE_FETCH_METHODS
. UseIntegrationConfig
andDD_<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 theddtrace.http.headers
module now merged intoddtrace.trace_utils
. -
The
collect_metrics
argument of thetracer.configure
method has been deprecated. Runtime metrics should be enabled only via theDD_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 publishcp27-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.