Releases: DataDog/dd-trace-py
0.16.0
New Integrations
- [jinja2] Add jinja2 integration (#649 -- thanks @mgu)
- [kombu] add Kombu integration (#515 -- thanks @tebriel)
- [grpc] Add grpc client support. (#641)
- [gevent] Support gevent 1.3 (#663)
- [flask] rewrite Flask integration (#667)
Bug Fixes
- [mysqldb] Fix mysqldb monkey patch (#623 -- thanks @benjamin-lim)
- [requests] exclude basic auth from service name (#646 -- thanks @snopoke)
Improvements
- [core] Add IntegrationConfig helper class (#684)
- [core] add support for integration span hooks (#679)
- [httplib, requests] Sanitize urls in span metadata (#688)
- [tests] ensure we are running tests.contrib.test_utils (#678)
- [celery] [bottle] Add span type information for celery and bottle. (#636)
- [ci] Reorganize autopatch test calls (#670)
- [core] initial support for partial flushes (#668)
- [django] Remove query from django db span's tag sql.query (#659)
- [tests] Make CI faster by disabling dist and install in autopatching tests (#654)
- [core] Trace http headers (#647)
- [django] Infer span resource name when internal error handler is used (#645)
- [elasticsearch] Make constant organization consistent with other integrations (#628)
Read the full changeset and the release milestone.
0.15.0
New integrations
- Add rediscluster integration (#533, #637)
- Add Vertica Integration (#634)
Bug fixes
- [django] Fix minimum Django version for user.is_authenticated property (#626 -- thanks @browniebroke)
Improvements
- [celery] Add retry reason metadata to spans (#630)
- [core] Update config to allow configuration before patching (#650)
- [core] Add Tracer API to retrieve the root Span (#625)
- [core] Fixed
HTTPConnectionleaking (#542 -- thanks @mackeyja92) - [django] Allow Django cache to be seen as a different service. (#629)
- [gevent] Patch modules on first import (#632)
- [gevent] Add support for gevent.pool.Pool and gevent.pool.Group (#600)
- [redis] Removed unused tag (#627)
- [requests] Patch modules on first import (#632)
- [tests] Add Span.span_type tests (#633)
- [tests] Update the integrations libraries versions to the latest possible. (#607)
- [tests] CircleCI run tests in the new alpine-based test runner (#638)
- [tests] Add test cases for API._put (#640)
- [tests] Skip flaky TestWorkers.test_worker_multiple_traces test case (#643)
- [tests] Remove tests for not supported gevent 1.3 (#644)
Read the full changeset and the release milestone.
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_spaninjectandextractfunctionalitybaggage, throughset_baggage_itemandget_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
pymemcacheintegration (#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_HOSTNAMEenvironment 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_typeduring initialization (#492, #507) - [boto] default to
Noneif no region (#525, #526) - [flask] avoid double instrumentation when
TraceMiddlewareis 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-runbroke third-party script support; now it handles correctly theargvparams (#469, #423) - [celery] patch
TaskRegistryto support old-style task withddtrace-run(#484) - [django] update error handling if another middleware has handled the exception already (#418, #462)
- [django]
DatabaseWrapperloaded in right thread, after removingsetting_changedsignal from theDatadogSettings(#481, #435) - [django/celery] add
shared_taskdecorator wrapper to trace properly Celery tasks (#486, #451) - [django/docs] notes about Debug Mode, and debugging (#476 -- thanks @ndkv!)
- [gevent] pass
sampling_priorityfield when Distributed Tracing is enabled (#457) - [mysqlb] add missing services info when they're flushed (#468, #428)
- [psycopg2] properly patch the driver when
quote_identtyping 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
concurrentmodule (#429, docs) - [mysql] add
pymysqlsupport (#296, docs -- thanks @wklken)
Improvements
- [core] introducing a low-level API to define configurations for each integration. This API is used only by the
requestsmodule and will be implemented in other integrations in newer releases (#445, #443, #450, #454, #441) - [celery] split the service name in
celery-producerandcelery-workerfor better stats (#432) - [falcon] add distributed tracing (#437)
- [requests] provide a default service name for the request
Span(#433) - [requests] add
split_by_domainconfig to split service name by domain (#434) - [tornado] better compatibility using
futuresinstrumentation (#431)
Bugfixes
- [core] ensure
sitecustomize.pyis imported whenddtrace-runwrapper is used (#458) - [flask] use
ddtracelogger 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-producerandcelery-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 theceleryservice, 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
routeargument inTracePlugin, to support Bottle 0.11.x (#439)
Bugfixes
- [django] gunicorn gevent worker wasn't instrumenting database connections (#442)
- [django] remove
MIDDLEWARE_CLASSESdeprecation warning from tests (#444) - [django] ensure only
MIDDLEWAREorMIDDLEWARE_CLASSESare loaded with tracing middlewares (#446)
Read the full changeset and the release milestone.
0.11.0
Security fixes
- [dbapi] remove
sql.querytag 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 NOTpsycopg2orsqlalchemywhile using the PostgreSQL driver. (#421)
New integrations
- [django] add support for Django 2.0 (#415 -- thanks @sciyoshi!)
- [mysql]
MySQL-pythonandmysqlclientpackages 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-runscript acceptsDATADOG_PRIORITY_SAMPLINGto enable Priority Sampling (#426) - [pylons] add distributed tracing via kwarg and environment variable (#425, docs)
- [pylons]
ddtrace-runscript can patch aPylonsApp(#416) - [pylons] add tracing to Pylons
renderfunction (#420)
Read the full changeset and 0.11.0 milestone.