Open
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 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)