Skip to content

Commit 769271d

Browse files
committed
feat(core): Refactor disabled tracing propagator
1 parent 5c898f2 commit 769271d

File tree

3 files changed

+14
-57
lines changed

3 files changed

+14
-57
lines changed

dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import static datadog.trace.api.DDTags.DSM_ENABLED;
77
import static datadog.trace.api.DDTags.PROFILING_CONTEXT_ENGINE;
88
import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.DSM_CONCERN;
9-
import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.STANDALONE_ASM_CONCERN;
109
import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.TRACING_CONCERN;
1110
import static datadog.trace.bootstrap.instrumentation.api.AgentPropagation.XRAY_TRACING_CONCERN;
1211
import static datadog.trace.common.metrics.MetricsAggregatorFactory.createMetricsAggregator;
@@ -85,7 +84,6 @@
8584
import datadog.trace.core.monitor.HealthMetrics;
8685
import datadog.trace.core.monitor.MonitoringImpl;
8786
import datadog.trace.core.monitor.TracerHealthMetrics;
88-
import datadog.trace.core.propagation.ApmTracingDisabledPropagator;
8987
import datadog.trace.core.propagation.ExtractedContext;
9088
import datadog.trace.core.propagation.HttpCodec;
9189
import datadog.trace.core.propagation.PropagationTags;
@@ -714,19 +712,11 @@ private CoreTracer(
714712
// Register context propagators
715713
HttpCodec.Extractor tracingExtractor =
716714
extractor == null ? HttpCodec.createExtractor(config, this::captureTraceConfig) : extractor;
717-
TracingPropagator tracingPropagator = new TracingPropagator(injector, tracingExtractor);
718-
// Check if apm tracing is disabled:
719-
// If disabled, use the APM tracing disabled propagator by default that will limit tracing
720-
// concern
721-
// injection and delegate to the tracing propagator if needed,
722-
// If disabled, the most common case, use the usual tracing propagator by default.
723-
boolean apmTracingDisabled = !config.isApmTracingEnabled();
724-
boolean dsm = config.isDataStreamsEnabled();
725-
Propagators.register(
726-
STANDALONE_ASM_CONCERN, new ApmTracingDisabledPropagator(), apmTracingDisabled);
727-
Propagators.register(TRACING_CONCERN, tracingPropagator, !apmTracingDisabled);
715+
TracingPropagator tracingPropagator =
716+
new TracingPropagator(config.isApmTracingEnabled(), injector, tracingExtractor);
717+
Propagators.register(TRACING_CONCERN, tracingPropagator);
728718
Propagators.register(XRAY_TRACING_CONCERN, new XRayPropagator(config), false);
729-
if (dsm) {
719+
if (config.isDataStreamsEnabled()) {
730720
Propagators.register(DSM_CONCERN, this.dataStreamsMonitoring.propagator());
731721
}
732722

dd-trace-core/src/main/java/datadog/trace/core/propagation/ApmTracingDisabledPropagator.java

Lines changed: 0 additions & 41 deletions
This file was deleted.

dd-trace-core/src/main/java/datadog/trace/core/propagation/TracingPropagator.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.trace.core.propagation;
22

3+
import static datadog.trace.api.ProductTraceSource.UNSET;
34
import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromContext;
45
import static datadog.trace.bootstrap.instrumentation.api.AgentSpan.fromSpanContext;
56

@@ -19,16 +20,19 @@
1920
/** Propagator for tracing concern. */
2021
@ParametersAreNonnullByDefault
2122
public class TracingPropagator implements Propagator {
23+
private final boolean enabled;
2224
private final Injector injector;
2325
private final Extractor extractor;
2426

2527
/**
2628
* Constructor.
2729
*
30+
* @param enabled Whether APM tracing is enabled.
2831
* @param injector The {@link Injector} used for tracing context injection.
2932
* @param extractor The {@link Extractor} used for tracing context extraction.
3033
*/
31-
public TracingPropagator(Injector injector, Extractor extractor) {
34+
public TracingPropagator(boolean enabled, Injector injector, Extractor extractor) {
35+
this.enabled = enabled;
3236
this.injector = injector;
3337
this.extractor = extractor;
3438
}
@@ -46,8 +50,12 @@ public <C> void inject(Context context, C carrier, CarrierSetter<C> setter) {
4650
AgentSpanContext spanContext = span.context();
4751
if (spanContext instanceof DDSpanContext) {
4852
DDSpanContext ddSpanContext = (DDSpanContext) spanContext;
53+
// Stop injection if tracing is disabled and tracing span is coming from tracing only
54+
if (!this.enabled && ddSpanContext.getPropagationTags().getTraceSource() == UNSET) {
55+
return;
56+
}
4957
ddSpanContext.getTraceCollector().setSamplingPriorityIfNecessary();
50-
this.injector.inject(ddSpanContext, carrier, setter::set);
58+
this.injector.inject(ddSpanContext, carrier, setter);
5159
}
5260
}
5361

0 commit comments

Comments
 (0)