Skip to content

Commit 32b306b

Browse files
chore: [SVLS-5973] fix span pointer flow control
1 parent fa9d00d commit 32b306b

File tree

1 file changed

+33
-23
lines changed

1 file changed

+33
-23
lines changed

datadog_lambda/span_pointers.py

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33
import os
44
from typing import List
5+
from typing import Optional
56

67
from ddtrace._trace._span_pointer import _SpanPointerDirection
78
from ddtrace._trace._span_pointer import _SpanPointerDescription
@@ -30,7 +31,7 @@ def calculate_span_pointers(
3031
return _calculate_dynamodb_span_pointers_for_event(event)
3132

3233
except Exception as e:
33-
logger.warning(
34+
logger.debug(
3435
"failed to calculate span pointers for event: %s",
3536
e,
3637
)
@@ -75,7 +76,7 @@ def _calculate_s3_span_pointers_for_object_created_s3_information(
7576
etag = s3_information["object"]["eTag"]
7677

7778
except KeyError as e:
78-
logger.warning(
79+
logger.debug(
7980
"missing s3 information required to make a span pointer: %s",
8081
e,
8182
)
@@ -86,17 +87,19 @@ def _calculate_s3_span_pointers_for_object_created_s3_information(
8687
_aws_s3_object_span_pointer_description,
8788
)
8889

89-
return [
90-
_aws_s3_object_span_pointer_description(
91-
pointer_direction=_SpanPointerDirection.UPSTREAM,
92-
bucket=bucket,
93-
key=key,
94-
etag=etag,
95-
)
96-
]
90+
span_pointer_description = _aws_s3_object_span_pointer_description(
91+
pointer_direction=_SpanPointerDirection.UPSTREAM,
92+
bucket=bucket,
93+
key=key,
94+
etag=etag,
95+
)
96+
if span_pointer_description is None:
97+
return []
98+
99+
return [span_pointer_description]
97100

98101
except Exception as e:
99-
logger.warning(
102+
logger.debug(
100103
"failed to generate S3 span pointer: %s",
101104
e,
102105
)
@@ -120,10 +123,13 @@ def _calculate_dynamodb_span_pointers_for_event_record(
120123
) -> List[_SpanPointerDescription]:
121124
try:
122125
table_name = _extract_table_name_from_dynamodb_stream_record(record)
126+
if table_name is None:
127+
return []
128+
123129
primary_key = record["dynamodb"]["Keys"]
124130

125131
except Exception as e:
126-
logger.warning(
132+
logger.debug(
127133
"missing DynamoDB information required to make a span pointer: %s",
128134
e,
129135
)
@@ -134,23 +140,25 @@ def _calculate_dynamodb_span_pointers_for_event_record(
134140
_aws_dynamodb_item_span_pointer_description,
135141
)
136142

137-
return [
138-
_aws_dynamodb_item_span_pointer_description(
139-
pointer_direction=_SpanPointerDirection.UPSTREAM,
140-
table_name=table_name,
141-
primary_key=primary_key,
142-
)
143-
]
143+
span_pointer_description = _aws_dynamodb_item_span_pointer_description(
144+
pointer_direction=_SpanPointerDirection.UPSTREAM,
145+
table_name=table_name,
146+
primary_key=primary_key,
147+
)
148+
if span_pointer_description is None:
149+
return []
150+
151+
return [span_pointer_description]
144152

145153
except Exception as e:
146-
logger.warning(
154+
logger.debug(
147155
"failed to generate DynamoDB span pointer: %s",
148156
e,
149157
)
150158
return []
151159

152160

153-
def _extract_table_name_from_dynamodb_stream_record(record) -> str:
161+
def _extract_table_name_from_dynamodb_stream_record(record) -> Optional[str]:
154162
# Example eventSourceARN:
155163
# arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2024-06-10T19:26:16.525
156164
event_source_arn = record["eventSourceARN"]
@@ -159,10 +167,12 @@ def _extract_table_name_from_dynamodb_stream_record(record) -> str:
159167
":", maxsplit=5
160168
)
161169
if _arn != "arn" or _aws != "aws" or _dynamodb != "dynamodb":
162-
raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}")
170+
logger.debug("unexpected eventSourceARN format: %s", event_source_arn)
171+
return None
163172

164173
[_table, table_name, _stream, _timestamp] = dynamodb_info.split("/")
165174
if _table != "table" or _stream != "stream":
166-
raise ValueError(f"unexpected eventSourceARN format: {event_source_arn}")
175+
logger.debug("unexpected eventSourceARN format: %s", event_source_arn)
176+
return None
167177

168178
return table_name

0 commit comments

Comments
 (0)