Fixes
- Fixes
traced
decorator behavior when working with generators. #106 - Fixes method for detection of asyncio. #107
Features
Improvements
- flask auto-instrumentation now includes the route as
request.route
field on the root span. #104
Fixes
- Trace context headers injected with the
requests
middleware now reference the correct parent span. Previously, the trace context was generated prior to the wrapping span around the request call, anchoring spans generated with this trace context to the wrong span.
Fixes
- Prevent duplicate
app.
prefixes in trace fields. #96
Fixes
- Allows less than three fields in trace context headers.
Fixes
- Flask Middleware: AttributeError in DB instrumentation when cursor.lastrowid doesn't exist #91.
Features
- Asyncio support! The new
AsyncioTracer
is used instead ofSynchronousTracer
when the beeline is initialized from within an asyncio event loop. #87
- Traces propagated from other beelines (nodejs, go) which supply the "dataset" field in the trace context can now be handled by
unmarshal_trace_context
. The dataset is discarded - honoring this override will come in a later version.
Features
awslambda
middleware can now extract Honeycomb Trace context from single SNS/SQS messages. #77
Fixes
- Don't try to access self.state.span in handle_error of Flask DB middleware if there is no current_app #81.
Improvements
- Django middleware now supports instrumentation of multiple database connections. See #80.
Features
- Django, Flask, Bottle, and Werkzeug middleware can now be subclassed to provide alternative implementations of
get_context_from_request
(Django)get_context_from_environ
(Flask, Bottle, Werkzeug) methods. This allows customization of the request fields that are automatically instrumented at the start of a trace. Thanks to sjoerdjob's initial contribution in #73.
Fixes
- Django's
HoneyMiddleware
no longer adds arequest.post
field by default. This was removed for two reasons. First, callingrequest.POST.dict()
could break other middleware by exhausting the request stream prematurely. See issue #74. Second, POST bodies can contain arbitrary values and potentially sensitive data, and the decision to instrument these values should be a deliberate choice by the user. If you currently rely on this behavior currently, you can swap outHoneyMiddleware
withHoneyMiddlewareWithPOST
to maintain the same functionality. - The
awslambda
middleware no longer crashes if thecontext
object is missing certain attributes. See #76.
Features
- Implements
add_rollup_field
API used in other Beelines. See the official API reference docs for full details.
Fixes
- Python Beeline now uses the same method to compute deterministic sampling decisions as other beelines (Go, NodeJS, Ruby). Prior to the fix, Beeline-generated traces spanning multiple services implemented in Python and other languages would have sometimes arrived incomplete due to inconsistent sampling behavior.
Features
- Adds new
traced_thread
decorator to copy over trace state to new threads. Read more in the official docs here. - Adds initial support for Werkzeug. Read about how to use it here.
Fixes
init
now works after a process fork. If the beeline has already been initialized prior to the fork, it will be reinitialized if called again. Prior to this change, callinginit
before fork would render the beeline inoperable in the forked process(es).
Fixes
- Support parameters of type
dict
in the flask-sqlachemy middleware. Addresses #62.