Skip to content

Commit 63f6812

Browse files
committed
respect DD_TRACE_ENABLED
1 parent 101cfb9 commit 63f6812

File tree

2 files changed

+47
-27
lines changed

2 files changed

+47
-27
lines changed

datadog_lambda/tracing.py

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1331,30 +1331,30 @@ def emit_telemetry_on_exception_outside_of_handler(
13311331
Emit an enhanced error metric and create a span for exceptions occuring outside of the handler
13321332
"""
13331333
submit_errors_metric(context)
1334+
if dd_tracing_enabled:
1335+
span = tracer.trace(
1336+
"aws.lambda",
1337+
service="aws.lambda",
1338+
resource=resource_name,
1339+
span_type="serverless",
1340+
)
1341+
span.start_ns = time_ns() - handler_load_duration
13341342

1335-
span = tracer.trace(
1336-
"aws.lambda",
1337-
service="aws.lambda",
1338-
resource=resource_name,
1339-
span_type="serverless",
1340-
)
1341-
span.start_ns = time_ns() - handler_load_duration
1342-
1343-
tags = {
1344-
"error.status": 500,
1345-
"error.type": type(exception).__name__,
1346-
"error.message": exception,
1347-
"error.stack": "".join(
1348-
traceback.format_exception(
1349-
type(exception), exception, exception.__traceback__
1350-
)
1351-
),
1352-
"resource_names": resource_name,
1353-
"resource.name": resource_name,
1354-
"operation_name": "aws.lambda",
1355-
"status": "error",
1356-
"request_id": context.aws_request_id,
1357-
}
1358-
span.set_tags(tags)
1359-
span.error = 1
1360-
span.finish()
1343+
tags = {
1344+
"error.status": 500,
1345+
"error.type": type(exception).__name__,
1346+
"error.message": exception,
1347+
"error.stack": "".join(
1348+
traceback.format_exception(
1349+
type(exception), exception, exception.__traceback__
1350+
)
1351+
),
1352+
"resource_names": resource_name,
1353+
"resource.name": resource_name,
1354+
"operation_name": "aws.lambda",
1355+
"status": "error",
1356+
"request_id": context.aws_request_id,
1357+
}
1358+
span.set_tags(tags)
1359+
span.error = 1
1360+
span.finish()

tests/test_tracing.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2004,9 +2004,12 @@ def test_deterministic_m5_hash__always_leading_with_zero(self):
20042004

20052005

20062006
class TestExceptionOutsideHandler(unittest.TestCase):
2007+
@patch("datadog_lambda.tracing.dd_tracing_enabled", True)
20072008
@patch("datadog_lambda.tracing.submit_errors_metric")
20082009
@patch("datadog_lambda.tracing.time_ns", return_value=100)
2009-
def test_exception_outside_handler(self, mock_time, mock_submit_errors_metric):
2010+
def test_exception_outside_handler_tracing_enabled(
2011+
self, mock_time, mock_submit_errors_metric
2012+
):
20102013
fake_error = ValueError("Some error message")
20112014
resource_name = "my_handler"
20122015
span_type = "aws.lambda"
@@ -2047,3 +2050,20 @@ def test_exception_outside_handler(self, mock_time, mock_submit_errors_metric):
20472050
mock_span.finish.assert_called_once()
20482051
assert mock_span.error == 1
20492052
assert mock_span.start_ns == 58
2053+
2054+
@patch("datadog_lambda.tracing.dd_tracing_enabled", False)
2055+
@patch("datadog_lambda.tracing.submit_errors_metric")
2056+
@patch("datadog_lambda.tracing.time_ns", return_value=100)
2057+
def test_exception_outside_handler_tracing_disabled(
2058+
self, mock_time, mock_submit_errors_metric
2059+
):
2060+
fake_error = ValueError("Some error message")
2061+
resource_name = "my_handler"
2062+
context = get_mock_context()
2063+
with patch("datadog_lambda.tracing.tracer.trace") as mock_trace:
2064+
emit_telemetry_on_exception_outside_of_handler(
2065+
context, fake_error, resource_name, 42
2066+
)
2067+
2068+
mock_submit_errors_metric.assert_called_once_with(context)
2069+
mock_trace.assert_not_called()

0 commit comments

Comments
 (0)