From 9981b70f18a8b47e95f3089a96b330bc0755d654 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 12 May 2025 12:51:58 -0400 Subject: [PATCH 1/2] solution1 : try catch --- datadog_lambda/trigger.py | 32 +++++++++++++++++++------------- tests/test_trigger.py | 7 +++++++ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index 8090e36e..fa6964bb 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -327,19 +327,25 @@ def extract_trigger_tags(event: dict, context: Any) -> dict: """ Parses the trigger event object to get tags to be added to the span metadata """ - trigger_tags = {} - event_source = parse_event_source(event) - if event_source.to_string() is not None and event_source.to_string() != "unknown": - trigger_tags["function_trigger.event_source"] = event_source.to_string() - - event_source_arn = get_event_source_arn(event_source, event, context) - if event_source_arn: - trigger_tags["function_trigger.event_source_arn"] = event_source_arn - - if event_source.event_type in _http_event_types: - trigger_tags.update(extract_http_tags(event)) - - return trigger_tags + try: + trigger_tags = {} + event_source = parse_event_source(event) + if event_source.to_string() is not None and event_source.to_string() != "unknown": + trigger_tags["function_trigger.event_source"] = event_source.to_string() + + event_source_arn = get_event_source_arn(event_source, event, context) + if event_source_arn: + trigger_tags["function_trigger.event_source_arn"] = event_source_arn + + if event_source.event_type in _http_event_types: + trigger_tags.update(extract_http_tags(event)) + + return trigger_tags + except Exception as e: + import logging + logger = logging.getLogger(__name__) + logger.info(f"Datadog failed to extract trigger tags: {e}") + return {} _str_http_triggers = [et.value for et in _http_event_types] diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 9cb088f1..0ab5d68a 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -530,6 +530,13 @@ def test_extract_trigger_tags_list_type_event(self): tags = extract_trigger_tags(event, ctx) self.assertEqual(tags, {}) + def test_extract_trigger_tags_error_handling(self): + event = {"requestContext": "not_a_dict"} # This would cause an error as requestContext is not a dict + ctx = get_mock_context() + + tags = extract_trigger_tags(event, ctx) + self.assertEqual(tags, {}) + class ExtractHTTPStatusCodeTag(unittest.TestCase): def test_extract_http_status_code_tag_from_response_dict(self): From 43b8a66dc9e008aa30d326fd3a82c441d368f2b1 Mon Sep 17 00:00:00 2001 From: Joey Zhao <5253430+joeyzhao2018@users.noreply.github.com> Date: Mon, 12 May 2025 13:27:52 -0400 Subject: [PATCH 2/2] lint --- datadog_lambda/trigger.py | 6 +++++- tests/test_trigger.py | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/datadog_lambda/trigger.py b/datadog_lambda/trigger.py index fa6964bb..599d3c32 100644 --- a/datadog_lambda/trigger.py +++ b/datadog_lambda/trigger.py @@ -330,7 +330,10 @@ def extract_trigger_tags(event: dict, context: Any) -> dict: try: trigger_tags = {} event_source = parse_event_source(event) - if event_source.to_string() is not None and event_source.to_string() != "unknown": + if ( + event_source.to_string() is not None + and event_source.to_string() != "unknown" + ): trigger_tags["function_trigger.event_source"] = event_source.to_string() event_source_arn = get_event_source_arn(event_source, event, context) @@ -343,6 +346,7 @@ def extract_trigger_tags(event: dict, context: Any) -> dict: return trigger_tags except Exception as e: import logging + logger = logging.getLogger(__name__) logger.info(f"Datadog failed to extract trigger tags: {e}") return {} diff --git a/tests/test_trigger.py b/tests/test_trigger.py index 0ab5d68a..a9c86399 100644 --- a/tests/test_trigger.py +++ b/tests/test_trigger.py @@ -531,7 +531,9 @@ def test_extract_trigger_tags_list_type_event(self): self.assertEqual(tags, {}) def test_extract_trigger_tags_error_handling(self): - event = {"requestContext": "not_a_dict"} # This would cause an error as requestContext is not a dict + event = { + "requestContext": "not_a_dict" + } # This would cause an error as requestContext is not a dict ctx = get_mock_context() tags = extract_trigger_tags(event, ctx)