Skip to content

Commit

Permalink
use new w3c phase 3 spec
Browse files Browse the repository at this point in the history
  • Loading branch information
mabdinur committed May 13, 2024
1 parent 0e3a0f1 commit c6de4f0
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions lib/datadog/tracing/distributed/propagation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,17 +101,19 @@ def extract(data)
# Only parse if it represent the same trace as the successfully extracted one
next unless tracecontext_digest.trace_id == extracted_trace_digest.trace_id

distributed_tags = extracted_trace_digest.trace_distributed_tags
unless tracecontext_digest.span_id == extracted_trace_digest.span_id
distributed_tags = distributed_tags&.dup || {}
if tracecontext_digest.span_id == extracted_trace_digest.span_id
parent_id = extracted_trace_digest.span_id
distributed_tags = extracted_trace_digest.trace_distributed_tags
else
# span_id in the tracecontext header takes precedence over the value in datadog headers
parent_id = tracecontext_digest.span_id
distributed_tags = extracted_trace_digest.trace_distributed_tags&.dup || {}
distributed_tags[Tracing::Metadata::Ext::Distributed::TAG_DD_PARENT_ID] =
tracecontext_digest.trace_distributed_tags.fetch(
Tracing::Metadata::Ext::Distributed::TAG_DD_PARENT_ID,
Tracing::Metadata::Ext::Distributed::DD_PARENT_ID_DEFAULT
)
format('%016x', extracted_trace_digest.span_id)
end
# Preserve the trace state and last datadog span id
extracted_trace_digest = extracted_trace_digest.merge(
span_id: parent_id,
trace_state: tracecontext_digest.trace_state,
trace_state_unknown_fields: tracecontext_digest.trace_state_unknown_fields,
trace_distributed_tags: distributed_tags
Expand Down

0 comments on commit c6de4f0

Please sign in to comment.