Skip to content

Commit 5cf2059

Browse files
better approach with indexes
1 parent e2cd3c5 commit 5cf2059

File tree

1 file changed

+7
-11
lines changed

1 file changed

+7
-11
lines changed

datadog_lambda/tracing.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -254,8 +254,7 @@ def extract_context_from_sqs_or_sns_event_or_context(
254254
if config.data_streams_enabled
255255
else [event.get("Records")[0]]
256256
)
257-
is_first_record = True
258-
for record in records:
257+
for idx, record in enumerate(records):
259258
try:
260259
source_arn = record.get("eventSourceARN", "")
261260
dsm_data = None
@@ -310,7 +309,7 @@ def extract_context_from_sqs_or_sns_event_or_context(
310309
logger.debug(
311310
"Failed to extract Step Functions context from SQS/SNS event."
312311
)
313-
if is_first_record:
312+
if idx == 0:
314313
context = propagator.extract(dd_data)
315314
dsm_data = dd_data
316315
else:
@@ -330,7 +329,7 @@ def extract_context_from_sqs_or_sns_event_or_context(
330329
logger.debug(
331330
"Found dd-trace injected trace context from AWSTraceHeader"
332331
)
333-
if is_first_record:
332+
if idx == 0:
334333
context = Context(
335334
trace_id=int(trace_id_parts[2][8:], 16),
336335
span_id=int(x_ray_context["parent_id"], 16),
@@ -341,7 +340,6 @@ def extract_context_from_sqs_or_sns_event_or_context(
341340

342341
# Set DSM checkpoint once per record
343342
_dsm_set_checkpoint(dsm_data, event_type, source_arn)
344-
is_first_record = False
345343

346344
return context if context else extract_context_from_lambda_context(lambda_context)
347345

@@ -410,19 +408,18 @@ def extract_context_from_kinesis_event(event, lambda_context):
410408
else event.get("Records")
411409
)
412410
context = None
413-
is_first_record = True
414-
for record in records:
411+
for idx, record in enumerate(records):
415412
dsm_data = None
416413
try:
417414
source_arn = record.get("eventSourceARN", "")
418415
kinesis = record.get("kinesis")
419416
if not kinesis:
420417
context = (
421418
extract_context_from_lambda_context(lambda_context)
422-
if is_first_record
419+
if idx == 0
423420
else context
424421
)
425-
is_first_record = False
422+
_dsm_set_checkpoint(None, "kinesis", source_arn)
426423
continue
427424
data = kinesis.get("data")
428425
if data:
@@ -434,13 +431,12 @@ def extract_context_from_kinesis_event(event, lambda_context):
434431
data_obj = json.loads(data_str)
435432
dd_ctx = data_obj.get("_datadog")
436433
if dd_ctx:
437-
if is_first_record:
434+
if idx == 0:
438435
context = propagator.extract(dd_ctx)
439436
dsm_data = dd_ctx
440437
except Exception as e:
441438
logger.debug("The trace extractor returned with error %s", e)
442439
_dsm_set_checkpoint(dsm_data, "kinesis", source_arn)
443-
is_first_record = False
444440
return context if context else extract_context_from_lambda_context(lambda_context)
445441

446442

0 commit comments

Comments
 (0)