aws / aws/aws-xray-sdk-python

Xray not capturing stack traces in latest version of Flask

Open
#269 2 comments 0 reactions 1 assignee Claimed by @srprash View on GitHub
bug pending release
Dominant language
Python
Stars
338
Forks
147
PR merge metrics
No merged PRs in 30d

Description

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 https://github.com/pallets/flask/pull/3266)

Currently using:
- aws-xray-sdk v2.6.0
- flask v1.1.2

Here is our current work around:

```python
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)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.