Releases: DataDog/dd-trace-py
Releases · DataDog/dd-trace-py
0.9.2
New features
- [django] disable database or cache instrumentation via settings so that each Django component instrumentation can be disabled (#314, docs -- thanks @mcanaves)
- [django] it's not required anymore to add the Django middleware because the Django app ensures that it is installed. You can safely remove
ddtrace.contrib.django.TraceMiddleware
for your middleware list after the upgrade. This is not mandatory but suggested (#314, #346) - [cassandra] trace
execute_async()
operations (#333)
Bugfixes
- [mysql] prevent the Pin from attaching empty tags (#327)
- [django] fixed the initialization order to prevent logs when the tracer is disabled (#334)
- [sqlite3] add tests to ensure that services are properly sent (#337)
- [pyramid] fixed Pyramid crash when 'include()' is used with relative import paths (#342)
- [pylons] re-raise the exception with the original traceback in case of errors. Before Pylons exceptions were correctly handled but hidden by the tracing middleware. (#317)
- [pyramid] disable autocommit in Pyramid patching, to avoid altering the
Configurator
behavior (#343) - [flask] fix Flask instrumentation that didn't close Jinja spans if an error was thrown (#344)
Integration coverage
- officially support ElasticSearch 1.6+ (#341)
Documentation
- fixed usage examples for
patch_all()
andpatch()
(#321 -- thanks @gomlgs) - added a section about updating the hostname and port (#335)
Read the full changeset.
0.9.1
New features
- [core] add a processing pipeline to the
AsyncWorker
, so that traces can be filtered easily. This change doesn't have any performance impact with existing installations, and is expected to work well with async frameworks / libraries (#303, docs) - [core] add language and library version metadata to keep track of them in the Datadog Agent. All values are sent via headers (#289)
Bugfixes
- [aiobotocore] update
async with
context manager so that it returns the wrapper instead of the wrapped object (#307) - [boto, botocore] change the service metadata app for AWS with a more meaningful name (#315)
Documentation
- improving documentation so that it's more explicit how a framework should be auto-instrumented (#305, #308)
- add the list of auto-instrumented modules (#306)
Read the full changeset.
0.9.0
New features
- [core] add process ID in root spans metadata (#293)
Improvements
- [falcon] extended support for Falcon 1.2; improved error handling (#295)
- [gevent] create a new
Context
when a Greenlet is created so that the tracing context is automatically propagated with the right parenting (#287) - [asyncio] providing helpers and
patch()
method to automatically propagate the tracing context between different asyncio tasks (#260 #297, docs -- thanks @thehesiod) - [aiohttp] add experimental feature to continue a trace from request headers (#259, docs -- thanks @thehesiod)
- [django] add
DEFAULT_DATABASE_PREFIX
setting to append a prefix to database service (#291, docs -- thanks @jairhenrique)
Bugfixes
- [logging] use specific logger instead of the root one in
monkey.py
module (#281) - [django]
ddtrace
exception middleware catches exceptions even if a custom middleware returns aResponse
object (#278) - [pylons] handle correctly the http status code when it's wrongly formatted (#284)
- [django] request resource handles the case where the
View
is a partial function (#292) - [flask] attach stack trace to Flask errors (#302)
New integrations
- [httplib] add patching for
httplib
andhttp.lib
(#137 -- thanks @brettlangdon) - [aio-libs] add
aiobotocore
support (#257, #298, docs -- thanks @thehesiod) - [aio-libs] add
aiopg
support (#258, docs -- thanks @thehesiod)
Read the full changeset.
0.8.5
Bugfixes
- [flask] add the http method to flask spans (#274)
- [sqlite3] changed the app_type to
db
(#276) - [core]
span.set_traceback()
now sets the traceback even if there's no exception (#277)
Read the full changeset.
0.8.4
0.8.3
Improvements
- [transport] add presampler header (
X-Datadog-Trace-Count
) so that the receiving agent has more information when dealing with sampling (#254) - [docs] updated our documentation (#264, #271)
Bugfixes
- [core] patch loader raises
PatchException
that is handled in thepatch_all()
when the patch failed. This distinguishes: errors during patch, when an integration is not available and simply when the module is not installed (#262) - [mysql] distinguish
MySQL-Python
instrumentation so that onlymysql-connector
package is patched; this provides better feedback about what library is supported (#263, #266) - [sqlalchemy] provide a
patch()
method that uses the PIN object; this is not a breaking change, but the preferred way to instrument SQLAlchemy is throughpatch_all(sqlalchemy=True)
orpatch(sqlalchemy=True)
(#261) - [pylons] catch
BaseException
since aSystemExit
might've been raised;500
errors are handled if a timeout occurs (#267, #270) - [pyramid] catch
BaseException
since aSystemExit
might've been raised;500
errors are handled if a timeout occurs (#269)
Read the full changeset
0.8.2
0.8.1
Bugfixes
- [core] fixed
msgpack-python
kwarg usage for versions earlier than0.4.x
(#245) - [pyramid] add request method to Pyramid trace span resource name (#249, thanks @johnpkennedy)
Read the full changeset.
0.8.0
New integrations
- Add support for Tornado web
4.0+
. Currently this integration is ignored by autopatching, but can be enabled viapatch_all(tornado=True)
(#204, docs -- thanks @ross for reviewing and testing the implementation)
Bugfixes
- [docs] Minor updates to our documentation (#239, #237, #242, #244 -- thanks @liubin @pahaz)
- [boto] Boto2 and Botocore integrations have safety check to prevent double patching (#240)
- [boto] Use frames directly without calling
getouterframes()
. This is a major improvement that reduces the impact of our tracing calls for Boto2 (#243 -- thanks @wackywendell) - [django] make
func_name
work with any callable and not only with functions (#195, #203 -- thanks @m0n5t3r)
Breaking change
- [elasticsearch] when importing
elasticsearch
before executingpatch_all()
, no traces are created. This patch changed where thePIN
object is attached, so you should update your instrumentation as described below (#238)
Migrate from 0.7.x to 0.8.0
- [elasticsearch] the PIN object was previously attached to the
elasticsearch
module while now it useselasticsearch.Transport
. If you were using thePin
to override some tracing settings, you must update your code from:
Pin.override(client, service='elasticsearch-traces')
to:
Pin.override(client.transport, service='elasticsearch-traces')
Internals update
- the Python traces logs and returns error when there is a communication issue with the APM Agent (#173)
- the
wrap()
tracer decorator can be extended by Python integrations when the usual approach is not suitable for the given execution context (#221)
Read the full changeset.
0.7.0
New integrations
- Add support for
boto
(>=2.29.0) andbotocore
(>= 1.4.51) #209 . Currently these integrations are ignored by autopatching, but can be enabled viapatch_all(boto=True, botocore=True)
New features
- Add the
ddtrace-run
command-line entrypoint to provide tracing without explicit additions to code. More information here http://pypi.datadoghq.com/trace/docs/#get-started #169
Bugfixes
- [dbapi] Ensure cursors play well with context managers #231
- [django] Provide a unique
datadog_django
app label to avoid clashes with existing app configs #235 - [pyramid] Ensure pyramid spans have method and route metadata consistent with other web frameworks #220 (thanks @johnpkennedy)