From 8b6f07ca310661fa10de610b61a155900a005b94 Mon Sep 17 00:00:00 2001 From: "dylan.yang" Date: Tue, 25 May 2021 13:30:17 -0400 Subject: [PATCH 1/2] catch xray subsegment creation exceptions --- datadog_lambda/tracing.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 63418c3e..7f63d4cd 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -106,12 +106,15 @@ def create_dd_dummy_metadata_subsegment( tags into its metadata field, so the X-Ray trace can be converted to a Datadog trace in the Datadog backend with the correct context. """ - xray_recorder.begin_subsegment(XraySubsegment.NAME) - subsegment = xray_recorder.current_subsegment() - subsegment.put_metadata( - subsegment_metadata_key, subsegment_metadata_value, XraySubsegment.NAMESPACE - ) - xray_recorder.end_subsegment() + try: + xray_recorder.begin_subsegment(XraySubsegment.NAME) + subsegment = xray_recorder.current_subsegment() + subsegment.put_metadata( + subsegment_metadata_key, subsegment_metadata_value, XraySubsegment.NAMESPACE + ) + xray_recorder.end_subsegment() + except Exception as e: + logger.debug("failed to create dd dummy metadata subsegment with error %s", e) def extract_context_from_lambda_context(lambda_context): From 7974ec0f5764b9e67d1f2146e2f0f4ba92bbe4e8 Mon Sep 17 00:00:00 2001 From: "dylan.yang" Date: Tue, 25 May 2021 15:22:58 -0400 Subject: [PATCH 2/2] log full stack trace --- datadog_lambda/tracing.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/datadog_lambda/tracing.py b/datadog_lambda/tracing.py index 7f63d4cd..4f528cc3 100644 --- a/datadog_lambda/tracing.py +++ b/datadog_lambda/tracing.py @@ -114,7 +114,11 @@ def create_dd_dummy_metadata_subsegment( ) xray_recorder.end_subsegment() except Exception as e: - logger.debug("failed to create dd dummy metadata subsegment with error %s", e) + logger.debug( + "failed to create dd dummy metadata subsegment with error %s", + e, + exc_info=True, + ) def extract_context_from_lambda_context(lambda_context):