Open
Description
Hello,
I am opening this issue on request of @NathanielRN after a discussion with him in #310 .
The problem is that when we have API GW -> Lambda invocation and in the Lambda we use async , then we get 2 separate traces. One from API GW to Lambda and another from in_segment_async
. To tie them together I have to use the following workaround:
# get current segment
trace_id = xray_recorder.get_trace_entity().trace_id
parent_id = xray_recorder.current_segment().id
# enable xray to work with async
# even though Lambda has its own segment we need to create one async segment
xray_recorder.configure(context=AsyncContext())
async with xray_recorder.in_segment_async('add_brochure', traceid=trace_id, parent_id=parent_id) as segment:
...
But even then most of the times (usually works first time after deployment only) it doesn't work because I get the error:
[ERROR] AttributeError: 'NoneType' object has no attribute 'trace_id'
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 19, in lambda_handler
trace_id = xray_recorder.get_trace_entity().trace_id
Metadata
Metadata
Assignees
Labels
No labels