Release Notes¶
v0.47.0rc1¶
New Features¶
cherrypy: introduce TraceMiddleware for the CherryPy web framework.
django: tag root spans as measured.
elasticsearch: add support for version 7.
fastapi: add integration.
Introduce support for the DD_SERVICE_MAPPING environment variable to allow remapping service names on emitted spans.
httplib: distributed tracing is now enabled by default.
The profiler now supports most operation mode from uWSGI without much configuration. It will automatically plug itself in post fork hooks when multiprocess mode is used.
wsgi: add tracing middleware.
Upgrade Notes¶
elasticsearch: removed get_traced_transport method and ddtrace.contrib.elasticsearch.transport module.
The profiler now automatically sets up uWSGI compatibility in auto mode or with profile_children=True. Make sure that you don’t have custom code instrumenting the profiler in those cases.
The
Tracer
class properties DEFAULT_HOSTNAME, DEFAULT_PORT, DEFAULT_DOGSTATSD_PORT, DEFAULT_DOGSTATSD_URL, DEFAULT_AGENT_URL have been removed.
Bug Fixes¶
Resolves an issue in Django tracing where, if query_string is not present in request.META, a KeyError is raised, causing the request to 500
Deprecate the DD_LOGGING_RATE_LIMIT variable in favor of the standard DD_TRACE_LOGGING_RATE for configuring the logging rate limit.
sampler: removed bug causing sample_rate of 0 to be reset to 1, and raise ValueError instead of logging.
starlette: unpatch calls correctly.
flask: fix memory leak of sampled out traces.
Fix CPU time and wall time profiling not ignoring the profiler tasks with gevent.
Other Notes¶
The default maximum CPU time used for the stack profiler (CPU time, wall time and exceptions profiling) has been decreased from 2% to 1%.
v0.46.0rc1¶
New Features¶
aiohttp: store request and response headers.
bottle: store request and response headers.
flask: store response headers.
molten: store request headers.
pyramid: store request and response headers.
flask: store request and response headers when auto-instrumented.
The ddtrace.profiling.auto module will warn users if gevent monkey patching is done after the profiler is auto-instrumented.
The Profiler object can now be passed tags with the tags keyword argument.
Upgrade Notes¶
The profiler will only load tags from the DD_TAGS environment variable once at start.
Deprecation Notes¶
flask: Use HTTP Custom Error Codes instead of
ddtrace.config.flask['extra_error_codes']
.
Bug Fixes¶
dbapi: avoid type error with potential non-compliance in db libraries when setting tag for row count.
django: add legacy resource format of {handler}.
grpc: fix wrapper for streaming response to support libraries that call an internal method directly.
sanic: use path parameter names instead of parameter values for the resource.
The profiler won’t deadlock on fork when gevent monkey patch is enabled.
requests: fix TracedSession when patches are not applied.
v0.45.0rc1¶
Prelude¶
Build and deploy Python 3.9 wheels for releases
New Features¶
botocore: added distributed_tracing configuration setting which is enabled by default.
- The ddtrace-run command now supports the following arguments:
-h, –help -d, –debug enable debug mode (disabled by default) -i, –info print library info useful for debugging -p, –profiling enable profiling (disabled by default) -v, –version show program’s version number and exit
It now also has friendlier error messages when used incorrectly.
Add functionality to call gevent.monkey.patch_all() with ddtrace-run by setting the environment variable DD_GEVENT_PATCH_ALL=true. This ensures that gevent patching is done as early as possible in the application.
botocore: inject distributed tracing data to ClientContext to trace lambda invocations.
botocore: inject tracing data to MessageAttributes.
The profiler now tracks the running gevent Greenlet and store it as part of the CPU and wall time profiling information.
The profiler is now able to upload profiles to the Datadog Agent by using a Unix Domain Socket.
It is now possible to pass a url parameter to the Profiler to specify the Datadog agent location.
The new memory profiler for Python is now enabled by default. This improves the profiler memory consumption and performance impact. It can still be disabled by setting DD_PROFILING_MEMALLOC=0 as an environment variable.
The profiler now uses the tracer configuration is no configuration is provided.
pytest integration. This enables the pytest runner to trace test executions.
Upgrade Notes¶
Context.get() has been removed and the functionality has been rolled into Context.close_span().
Tracer.record() has similarly been removed as it is no longer useful with Context.get() removed.
The deprecated compatibility module ddtrace.profile has been removed.
The profiler now uses the tracer configuration is no configuration is provided.
Deprecation Notes¶
The pyddprofile wrapper is deprecated. Use DD_PROFILING_ENABLED=true ddtrace-run instead.
The profiler does not catch uncaught exception anymore.
Bug Fixes¶
core: always reset the current_span in the context.
django: Http404 exceptions will no longer be flagged as errors
django: add safe guards for building http.url span tag.
aiobotocore: set span error for 5xx status codes.
elasticsearch: set span error for 5xx status codes.
django, DRF, ASGI: fix span type for web request spans.
Fixes span id tagging in lock profiling.
Fix UDS upload for profiling not using the correct path.
Fixed an issue in profiling exporting profiles twice when forking.
core: fix race condition in TracerTagCollector.
Other Notes¶
Start-up logs are now disabled by default. To enable start-up logs use DD_TRACE_STARTUP_LOGS=true or DD_TRACE_DEBUG=true.
v0.44.0rc1¶
Prelude¶
Add support for Python 3.9
New Features¶
Store request headers in Flask integration.
pyodbc integration. This enables the pyodbc library to trace queries.
starlette integration resource aggregation This aggregates endpoints to the starlette application resource that was accessed. It occurs by default but it is configurable through config.starlette[“aggregate_resources”].
The profiler now captures the traces information with the lock profiling.
The Profiler instances now restart automatically in child process when the main program is forked. This only works for Python ≥ 3.7.
Bug Fixes¶
dbapi: add support for connection context manager usage
django: check view before instrumenting MRO.
core: use loose types when encoding.
Patch pynamodb on import to prevent patching conflicts with gevent.
tornado: handle when the current span is None in log_exception().
Prior Releases¶
Release notes prior to v0.44.0 can be found in CHANGELOG.md in the root of the repository.