Skip to content

Releases: DataDog/dd-trace-py

0.16.0

13 Nov 16:18
4e5acbd

Choose a tag to compare

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

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

16 Oct 19:01
1c5a3ba

Choose a tag to compare

New integrations

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 HTTPConnection leaking (#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

25 Sep 16:05
ce33848

Choose a tag to compare

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

11 Sep 18:28
8462869

Choose a tag to compare

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 and extract functionality
  • baggage, through set_baggage_item and get_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

04 Sep 15:48

Choose a tag to compare

Bug fixes

  • [core] remove the root logger configuration within the library (#556)

Read the full changeset and the release milestone.

0.13.0

23 Aug 12:53

Choose a tag to compare

New integrations

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.

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() and delay() will be traced but tasks invoked with run() 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

14 Jun 09:08

Choose a tag to compare

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 the argv params (#469, #423)
  • [celery] patch TaskRegistry to support old-style task with ddtrace-run (#484)
  • [django] update error handling if another middleware has handled the exception already (#418, #462)
  • [django] DatabaseWrapper loaded in right thread, after removing setting_changed signal from the DatadogSettings (#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

03 May 12:04

Choose a tag to compare

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 and celery-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 when ddtrace-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 and celery-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 the celery service, are still available if you move back the time selector.

Read the full changeset and the release milestone.

0.11.1

30 Mar 09:47

Choose a tag to compare

Improvements

  • [bottle] use the route argument in TracePlugin, 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 or MIDDLEWARE_CLASSES are loaded with tracing middlewares (#446)

Read the full changeset and the release milestone.

0.11.0

05 Mar 10:50

Choose a tag to compare

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 NOT psycopg2 or sqlalchemy while using the PostgreSQL driver. (#421)

New integrations

  • [django] add support for Django 2.0 (#415 -- thanks @sciyoshi!)
  • [mysql] MySQL-python and mysqlclient 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 accepts DATADOG_PRIORITY_SAMPLING to enable Priority Sampling (#426)
  • [pylons] add distributed tracing via kwarg and environment variable (#425, docs)
  • [pylons] ddtrace-run script can patch a PylonsApp (#416)
  • [pylons] add tracing to Pylons render function (#420)

Read the full changeset and 0.11.0 milestone.