Skip to content

Xray not capturing stack traces in latest version of Flask #269

Open
@ianmetcalf

Description

@ianmetcalf

The after_request handler is closing the segment before the teardown_request handler is called so the stack trace isn't captured.

It looks like this behavior changed as of Flask v1.1.0 (specifically pallets/flask#3266)

Currently using:

  • aws-xray-sdk v2.6.0
  • flask v1.1.2

Here is our current work around:

app = Flask(__name__)

def wrap_exception_handler(handler):
    def wrapped_function(exp):
        if not isinstance(exp, HTTPException) or exp.code >= 500:
            try:
                stack = stacktrace.get_stacktrace(
                    limit=xray_recorder.max_trace_back,
                )

                xray_recorder.current_segment().add_exception(exp, stack)
            except Exception:
                app.logger.error('Failed to add stack trace to xray segment')

        return handler(exp)
    return wrapped_function

app.handle_user_exception = wrap_exception_handler(app.handle_user_exception)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions