Releases: DataDog/dd-trace-py
0.14.1
Bug fixes
- [opentracer] Activate span context on extract (#606, #608)
- [opentracer] Fix "does not provide the extra opentracing" (#611, #616)
Improvements
- [docs] Clarify debug mode (#610)
- [docs] Fix docstring for
Tracer.set_tags
(#612 -- thanks @goodspark) - [docs] Add priority sampling to ddtrace-run usage (#621)
- [circleci] Imrpve python docs deployment strategy (#615)
- [tests] Refactor tox.ini file (#609)
- [tests] Improve performance of tests execution (#605)
Read the full changeset and the release milestone.
0.14.0
OpenTracing
In this release we are happy to introduce the beta for the long-awaited OpenTracing compatible API layer for ddtrace
!
Support for opentracing>=2.0.0
is provided in this release. Namely, the following are supported:
start_span
/start_active_span
inject
andextract
functionalitybaggage
, throughset_baggage_item
andget_baggage_item
- compatible tags from the OpenTracing specification
- scope manager support
- seamless integration with the Datadog tracer when using
ddtrace-run
For setup information and usage see our docs for the Datadog OpenTracing tracer.
CI Improvements
Also included in this release are some optimizations to our CI which should get things running a bit quicker.
Thanks @labbati!
Read the full changeset and the release milestone.
0.13.1
Bug fixes
- [core] remove the root logger configuration within the library (#556)
Read the full changeset and the release milestone.
0.13.0
New integrations
pymemcache
integration (#511)
Celery integration
Due to some limitations with our Celery integration, we changed our instrumentation to a signals based approach. We also started using import hooks to instrument Celery, so that enabling the instrumentation doesn't trigger a celery
import.
- Signals implementation: #530
- Moving to import hooks: #534
- Resolved issues: #357, #493, #495, #495, #510, #370
Breaking changes
Using the signal based approach increase the stability of our instrumentation, but it limits what is currently traced. This is a list of changes that are considered breaking changes in the behavior and not in the API, so no changes are needed in your code unless you want a different behavior:
- By default all tasks will be traced if they use the Celery signals API, so tasks invoked with methods like
apply()
,apply_async()
anddelay()
will be traced but tasks invoked withrun()
will not be traced. patch_task()
is deprecated; if it's used, all tasks will be instrumented
Bug fixes
- [core] check if bootstrap dir is in path before removal (#516 -- thanks @beezz!)
- [core] have hostname default to
DATADOG_TRACE_AGENT_HOSTNAME
environment variable if available (#509, #524 -- thanks @hfern!) - [core] add WSGI-style http headers support to HTTP propagator (#456, #522)
- [core] Enable buffering on
getresponse
(#464, #527) - [core] configure the root logger (#536)
- [aiopg] set the
app_type
during initialization (#492, #507) - [boto] default to
None
if no region (#525, #526) - [flask] avoid double instrumentation when
TraceMiddleware
is used (#538) - [pymongo] fix multiple host kwargs (#535)
- [tornado] make settings object accessible during configuration (#499, #498 -- thanks @kave!)
Improvements
- [core/helpers] add a shortcut to retrieve Trace correlation identifiers (#488)
Read the full changeset and the release milestone.
0.12.1
Bugfixes
- [celery] add support for celery v1 tasks (old-style tasks) (#465, #423)
- [celery]
ddtrace-run
broke third-party script support; now it handles correctly theargv
params (#469, #423) - [celery] patch
TaskRegistry
to support old-style task withddtrace-run
(#484) - [django] update error handling if another middleware has handled the exception already (#418, #462)
- [django]
DatabaseWrapper
loaded in right thread, after removingsetting_changed
signal from theDatadogSettings
(#481, #435) - [django/celery] add
shared_task
decorator wrapper to trace properly Celery tasks (#486, #451) - [django/docs] notes about Debug Mode, and debugging (#476 -- thanks @ndkv!)
- [gevent] pass
sampling_priority
field when Distributed Tracing is enabled (#457) - [mysqlb] add missing services info when they're flushed (#468, #428)
- [psycopg2] properly patch the driver when
quote_ident
typing is used (#477, #474, #383) - [pylons] ensure the middleware code is Python 3 compatible to avoid crashes on import (#475, #472)
- [requests] add missing services info when they're flushed (#471, #428)
Read the full changeset and the release milestone.
0.12.0
New integrations
- [boto] Botocore and boto instrumentation is enabled by default using
patch_all()
(#319) - [futures] provide context propagation for
concurrent
module (#429, docs) - [mysql] add
pymysql
support (#296, docs -- thanks @wklken)
Improvements
- [core] introducing a low-level API to define configurations for each integration. This API is used only by the
requests
module and will be implemented in other integrations in newer releases (#445, #443, #450, #454, #441) - [celery] split the service name in
celery-producer
andcelery-worker
for better stats (#432) - [falcon] add distributed tracing (#437)
- [requests] provide a default service name for the request
Span
(#433) - [requests] add
split_by_domain
config to split service name by domain (#434) - [tornado] better compatibility using
futures
instrumentation (#431)
Bugfixes
- [core] ensure
sitecustomize.py
is imported whenddtrace-run
wrapper is used (#458) - [flask] use
ddtrace
logger instead of Flask to avoid having a custom log filter (#447, #455)
Breaking changes
- [celery] the name of the service is now split in two different services:
celery-producer
andcelery-worker
. After the upgrade, you'll stop sending data to what was the default service name (celery
). You should check the new services instead because you'll see a drop. Previously reported traces in thecelery
service, are still available if you move back the time selector.
Read the full changeset and the release milestone.
0.11.1
Improvements
- [bottle] use the
route
argument inTracePlugin
, to support Bottle 0.11.x (#439)
Bugfixes
- [django] gunicorn gevent worker wasn't instrumenting database connections (#442)
- [django] remove
MIDDLEWARE_CLASSES
deprecation warning from tests (#444) - [django] ensure only
MIDDLEWARE
orMIDDLEWARE_CLASSES
are loaded with tracing middlewares (#446)
Read the full changeset and the release milestone.
0.11.0
Security fixes
- [dbapi] remove
sql.query
tag from SQL spans, so that the content is properly obfuscated in the Agent. This security fix is required to prevent wrong data collection of reported SQL queries. This issue impacts only MySQL integrations and NOTpsycopg2
orsqlalchemy
while using the PostgreSQL driver. (#421)
New integrations
- [django] add support for Django 2.0 (#415 -- thanks @sciyoshi!)
- [mysql]
MySQL-python
andmysqlclient
packages are currently supported (#376 -- thanks @yoichi!) - [psycopg2] add support for version 2.4 (#424)
- [pylons] Pylons >= 0.9.6 is officially supported (#416)
Bugfixes
- [core]
ddtrace-run
script acceptsDATADOG_PRIORITY_SAMPLING
to enable Priority Sampling (#426) - [pylons] add distributed tracing via kwarg and environment variable (#425, docs)
- [pylons]
ddtrace-run
script can patch aPylonsApp
(#416) - [pylons] add tracing to Pylons
render
function (#420)
Read the full changeset and 0.11.0 milestone.
0.10.1
Distributed Tracing
Add distributed tracing using integration settings for the following libraries/frameworks:
Improvements
- [core] provide constants to pick Priority Sampling values (#391)
- [django] add support for Django Rest Framework (#389)
- [tooling] add missing classifiers for pypi (#395 -- thanks @PCManticore)
- [tornado] patch
concurrent.futures
if available, improving the way traces are built when propagation happens between threads (#362 -- thanks @codywilbourn)
Bugfixes
- [httplib] don't overwrite return value (#380 -- thanks @yoichi)
- [psycopg2] patch all imports of
register_type
(#393 -- thanks @stj) - [pyramid] keep request as part of
render
kwargs (#384 -- thanks @joual) - [pyramid] use pyramid
HTTPExceptions
as valid response types (#401, #386 -- thanks @TylerLubeck) - [requests] add
unpatch
and double-patch protection (#404) - [flask] don't override code of already handled errors (#390, #409)
- [flask] allow mutability of
resource
field within request (#353, #410)
Read the full changeset.
0.10.0
Distributed Sampling (beta)
New feature that propagates the sampling priority across services. This is useful to mark traces as "don’t keep the trace" or "must have" when distributed tracing is used. This new functionality requires at least the Datadog Agent 5.19+. Frameworks with out-of-the-box support are: Django, Flask, Tornado (#358, #325, #359, #364, #366, #365, #371, docs)
Improvements
- [core] update the Context propagation API, that includes a new way to retrieve and set the current active
Span
context. (#339) - [core] implement Propagators API to simplify Distributed Tracing. You can use
HTTPPropagator
class to inject and extract the tracing context in HTTP headers (#363, #374 docs) - [celery] use service name from
DATADOG_SERVICE_NAME
env var, if defined (#347 -- thanks @miketheman) - [django] respect env Agent host and port if defined (#354 -- thanks @spesnova)
Bugfixes
- [pylons] handle exception with non standard 'code' attribute (#350)
- [pyramid] the application was not traced when the tween list was explicitly specified (#349)
Read the full changeset