New Features
-
OpenAI: Add integration with support for metrics, logs and traces from OpenAI requests. See the docs for more information.
-
psycopg: This release adds support for the new psycopg3 package. This new integration has all the same tracing functionality as the previous psycopg2-binary package, with added support for new methods including async connection and async cursor classes. The release also adds support for using Django>=4.2 with psycopg3 integrated tracing.
Bug Fixes
-
appsec: Fixes an encoding error when we are unable to cleanup the AppSec request context associated with a span.
-
django: Fixed a bug that prevented a Django application from starting with celery and gevent workers if
DJANGO_SETTINGS_MODULE
was not explicitly set. -
tracing: Fixes a cryptic encoding exception message when a span tag is not a string.
-
django: Adds catch to guard against a ValueError, AttributeError, or NotImplementedError from being thrown when evaluating a django cache result for
db.row_count
tag. -
elasticsearch: This fix resolves an issue where the tracer would throw an error when patching unsupported versions of elasticsearch (> 8.0). Patching is now skipped if an unsupported version is detected.- bootstrap: fixed an issue with the behavior of
ddtrace.auto
that could have caused incompatibilities with frameworks such asgevent
when used as a programmatic alternative to theddtrace-run
command. -
ASM: fix extract_body for Django such that users of Django Rest Framework can still use custom parsers.
-
flask: Remove patching for Flask hooks
app.before_first_request
andbp.before_app_first_request
if Flask version >= 2.3.0. -
gevent: Fix a bug that caused traceback objects to fail to pickle when using gevent.
-
profiler: Fixed a bug that caused segmentation faults in applications that use protobuf as a runtime dependency.
-
redis: Resolves an issue where the aioredis/aredis/yaaredis integrations cross-imported a helper method from the redis integration, which triggered redis patching before the redis integration was fully loaded.
-
profiler: Fix support for latest versions of protobuf.
-
algoliasearch: This fix resolves an issue where non-text search query arguments caused Type Errors when being added as tags.
-
ASM: fix calling set_user without a created span raising a ValueError.
-
django: Adds fix for bug where Django cache return object throws an error if it does not implement
__bool__()
. -
kafka: Previously instantiating a subclass of kafka's Producer/Consumer classes would result in attribute errors due to patching the Producer/Consumer classes with an ObjectProxy. This fix resolves this issue by making the traced classes directly inherit from kafka's base Producer/Consumer classes.
-
profiling: Fixed a regression in the memory collector that caused it to fail to cleanly re-initialize after a fork, causing error messages to be logged.
-
logging: Ensure that the logging module can report thread information, such as thread names, correctly when a framework like gevent is used that requires modules cleanup.
-
ASM: This fix resolves an issue where path parameters for the Flask framework were handled at response time instead of at request time for suspicious request blocking. This close a known issue opened in 1.10.0.
-
lib-injection: Switch installation to install from included wheels. Prior,
the wheels were merged together which caused conflicts between versions of dependencies based on Python version. -
tracer: Handle exceptions besides
ImportError
when integrations are loaded.
Other Changes
- ASM: Add information about Application Security config values on ddtrace-run --info.
- otel: Fixes code formatting in api docs