Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ public void map(List<? extends CoreSpan<?>> trace, Writable writable) {
}

CoreSpan<?> firstSpan = trace.get(0);
firstSpan.processTagsAndBaggage(spanMetadata, false, false);
firstSpan.processTagsAndBaggageWithStructuredLinks(spanMetadata);
Metadata firstSpanMeta = spanMetadata.metadata;

// encoded fields: 1..7, but skipping #5, as not required by tracers and set by the agent.
Expand Down Expand Up @@ -128,7 +128,7 @@ private void encodeSpans(Writable writable, int fieldId, List<? extends CoreSpan
Metadata meta = spanMetadata.metadata;
for (CoreSpan<?> span : spans) {
if (meta == null) {
span.processTagsAndBaggage(spanMetadata, false, false);
span.processTagsAndBaggageWithStructuredLinks(spanMetadata);
meta = spanMetadata.metadata;
}
TagMap tags = meta.getTags();
Expand Down
13 changes: 11 additions & 2 deletions dd-trace-core/src/main/java/datadog/trace/core/CoreSpan.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,17 @@ default String getSpanKindString() {

void processTagsAndBaggage(MetadataConsumer consumer);

void processTagsAndBaggage(
MetadataConsumer consumer, boolean injectLinksAsTags, boolean injectBaggageAsTags);
/**
* Variant of {@link #processTagsAndBaggage(MetadataConsumer)} for protocols that serialize span
* links as first-class structured data rather than tags. Baggage tag injection still follows the
* tracer configuration.
*
* <p>To simplify tests, by default delegating to {@link
* #processTagsAndBaggage(MetadataConsumer)}.
*/
default void processTagsAndBaggageWithStructuredLinks(MetadataConsumer consumer) {
processTagsAndBaggage(consumer);
}

T setSamplingPriority(int samplingPriority, int samplingMechanism);

Expand Down
6 changes: 2 additions & 4 deletions dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java
Original file line number Diff line number Diff line change
Expand Up @@ -781,10 +781,8 @@ public void processTagsAndBaggage(final MetadataConsumer consumer) {
}

@Override
public void processTagsAndBaggage(
final MetadataConsumer consumer, boolean injectLinksAsTags, boolean injectBaggageAsTags) {
context.processTagsAndBaggage(
consumer, longRunningVersion, this, injectLinksAsTags, injectBaggageAsTags);
public void processTagsAndBaggageWithStructuredLinks(final MetadataConsumer consumer) {
context.processTagsAndBaggageWithStructuredLinks(consumer, longRunningVersion, this);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1199,6 +1199,20 @@ void processTagsAndBaggage(
consumer, longRunningVersion, restrictedSpan, injectLinksAsTags, injectBaggageAsTags);
}

/**
* Serialize span links as first-class structured data rather than tags. While baggage tag
* injection keeps following the tracer configuration.
*/
void processTagsAndBaggageWithStructuredLinks(
final MetadataConsumer consumer, int longRunningVersion, DDSpan restrictedSpan) {
processTagsAndBaggage(
consumer,
longRunningVersion,
restrictedSpan,
false, // injectLinksAsTags
injectBaggageAsTags);
}

void processTagsAndBaggage(
final MetadataConsumer consumer,
int longRunningVersion,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,6 @@ class SimpleSpan implements CoreSpan<SimpleSpan> {
@Override
void processTagsAndBaggage(MetadataConsumer consumer) {}

@Override
void processTagsAndBaggage(MetadataConsumer consumer, boolean injectLinksAsTags, boolean injectBaggageAsTags) {}

@Override
SimpleSpan setSamplingPriority(int samplingPriority, int samplingMechanism) {
return this
Expand Down
Loading