From 8358bca5a4bcbb1b698486b0300ed397c1c38856 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Fri, 22 Aug 2025 11:02:44 +0200 Subject: [PATCH 1/3] Move base and peer service adder before span is published --- .../java/datadog/trace/core/CoreTracer.java | 33 +++++++++++++++++++ .../main/java/datadog/trace/core/DDSpan.java | 4 +++ .../datadog/trace/core/DDSpanContext.java | 4 +++ .../TagsPostProcessorFactory.java | 17 +--------- .../datadog/trace/core/CoreTracerTest.groovy | 8 +++-- .../core/test/DDCoreSpecification.groovy | 7 ++-- 6 files changed, 52 insertions(+), 21 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index 4c81a579f83..bffc86bfd11 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -97,6 +97,10 @@ import datadog.trace.core.scopemanager.ContinuableScopeManager; import datadog.trace.core.taginterceptor.RuleFlags; import datadog.trace.core.taginterceptor.TagInterceptor; +import datadog.trace.core.tagprocessor.BaseServiceAdder; +import datadog.trace.core.tagprocessor.PeerServiceCalculator; +import datadog.trace.core.tagprocessor.PostProcessorChain; +import datadog.trace.core.tagprocessor.TagsPostProcessor; import datadog.trace.core.traceinterceptor.LatencyTraceInterceptor; import datadog.trace.lambda.LambdaHandler; import datadog.trace.relocate.api.RatelimitedLogger; @@ -199,6 +203,8 @@ public static CoreTracerBuilder builder() { private final boolean defaultSpanTagsNeedsIntercept; + public final PostProcessorChain preWritePostProcessorChain; + /** number of spans in a pending trace before they get flushed */ private final int partialFlushMinSpans; @@ -320,6 +326,7 @@ public static class CoreTracerBuilder { private StatsDClient statsDClient; private HealthMetrics healthMetrics; private TagInterceptor tagInterceptor; + private List preWriteTagsPostProcessors; private boolean strictTraceWrites; private InstrumentationGateway instrumentationGateway; private TimeSource timeSource; @@ -422,6 +429,12 @@ public CoreTracerBuilder tagInterceptor(TagInterceptor tagInterceptor) { return this; } + public CoreTracerBuilder preWriteTagsPostProcessors( + List preWriteTagsPostProcessors) { + this.preWriteTagsPostProcessors = preWriteTagsPostProcessors; + return this; + } + public CoreTracerBuilder healthMetrics(HealthMetrics healthMetrics) { this.healthMetrics = healthMetrics; return this; @@ -527,6 +540,7 @@ public CoreTracer build() { statsDClient, healthMetrics, tagInterceptor, + preWriteTagsPostProcessors, strictTraceWrites, instrumentationGateway, timeSource, @@ -587,6 +601,7 @@ private CoreTracer( statsDClient, healthMetrics, tagInterceptor, + null, strictTraceWrites, instrumentationGateway, timeSource, @@ -618,6 +633,7 @@ private CoreTracer( final StatsDClient statsDClient, final HealthMetrics healthMetrics, final TagInterceptor tagInterceptor, + final List preWriteTagsPostProcessors, final boolean strictTraceWrites, final InstrumentationGateway instrumentationGateway, final TimeSource timeSource, @@ -667,6 +683,15 @@ private CoreTracer( this.tagInterceptor = null == tagInterceptor ? new TagInterceptor(new RuleFlags(config)) : tagInterceptor; + if (preWriteTagsPostProcessors != null) { + this.preWritePostProcessorChain = + new PostProcessorChain(preWriteTagsPostProcessors.toArray(new TagsPostProcessor[0])); + } else { + this.preWritePostProcessorChain = + new PostProcessorChain( + new PeerServiceCalculator(), new BaseServiceAdder(Config.get().getServiceName())); + } + this.defaultSpanTags = defaultSpanTags; this.defaultSpanTagsNeedsIntercept = this.tagInterceptor.needsIntercept(this.defaultSpanTags); @@ -1109,6 +1134,14 @@ void write(final List trace) { if (writtenTrace.isEmpty()) { return; } + + // run early tag postprocessors before publishing to the metrics writer since peer / base + // service are needed + for (DDSpan span : writtenTrace) { + final DDSpanContext ddSpanContext = span.context(); + preWritePostProcessorChain.processTags( + ddSpanContext.unsafeGetTags(), ddSpanContext, span.getLinks()); + } boolean forceKeep = metricsAggregator.publish(writtenTrace); TraceCollector traceCollector = writtenTrace.get(0).context().getTraceCollector(); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java index 2c282f15a57..6745dd7c335 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java @@ -826,6 +826,10 @@ public void addLink(AgentSpanLink link) { } } + List getLinks() { + return links; + } + // to be accessible in Spock spies, which the field wouldn't otherwise be public long getStartTimeNano() { return startTimeNano; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java index ed18aa1efc8..54bc0b0cccb 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java @@ -897,6 +897,10 @@ public TagMap getTags() { } } + TagMap unsafeGetTags() { + return unsafeTags; + } + /** @see CoreSpan#getMetaStruct() */ public Map getMetaStruct() { return Collections.unmodifiableMap(metaStruct); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java index 1753a52af4a..ac68d940daa 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java @@ -5,16 +5,12 @@ import java.util.List; public final class TagsPostProcessorFactory { - private static boolean addBaseService = true; private static boolean addRemoteHostname = true; private static class Lazy { private static TagsPostProcessor create() { final List processors = new ArrayList<>(7); - processors.add(new PeerServiceCalculator()); - if (addBaseService) { - processors.add(new BaseServiceAdder(Config.get().getServiceName())); - } + processors.add(new QueryObfuscator(Config.get().getObfuscationQueryRegexp())); if (addRemoteHostname) { processors.add(new RemoteHostnameAdder(Config.get().getHostNameSupplier())); @@ -44,16 +40,6 @@ public static TagsPostProcessor instance() { return Lazy.instance; } - /** - * Mostly used for test purposes. - * - * @param enabled if false, {@link BaseServiceAdder} is not put in the chain. - */ - public static void withAddBaseService(boolean enabled) { - addBaseService = enabled; - Lazy.instance = Lazy.create(); - } - /** * Mostly used for test purposes. * @@ -66,7 +52,6 @@ public static void withAddRemoteHostname(boolean enabled) { /** Used for testing purposes. It reset the singleton and restore default options */ public static void reset() { - withAddBaseService(true); withAddRemoteHostname(true); } } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/CoreTracerTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/CoreTracerTest.groovy index ba781cf010c..560c33ba451 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/CoreTracerTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/CoreTracerTest.groovy @@ -19,7 +19,7 @@ import datadog.trace.common.sampling.Sampler import datadog.trace.common.writer.DDAgentWriter import datadog.trace.common.writer.ListWriter import datadog.trace.common.writer.LoggingWriter -import datadog.trace.core.tagprocessor.TagsPostProcessorFactory +import datadog.trace.core.tagprocessor.BaseServiceAdder import datadog.trace.core.test.DDCoreSpecification import okhttp3.HttpUrl import okhttp3.OkHttpClient @@ -544,8 +544,10 @@ class CoreTracerTest extends DDCoreSpecification { setup: injectSysConfig(SERVICE_NAME, "dd_service_name") injectSysConfig(VERSION, "1.0.0") - TagsPostProcessorFactory.withAddBaseService(true) - def tracer = tracerBuilder().writer(new ListWriter()).build() + def tracer = tracerBuilder() + .writer(new ListWriter()) + .preWriteTagsPostProcessors([new BaseServiceAdder("dd_service_name")]) + .build() when: def span = tracer.buildSpan("def").withTag(SERVICE_NAME,"foo").start() diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy index 5318c9b93c6..7f06b783a27 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy @@ -1,5 +1,7 @@ package datadog.trace.core.test +import static java.util.Collections.emptyList + import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.StatsDClient @@ -27,7 +29,6 @@ abstract class DDCoreSpecification extends DDSpecification { @Override void setupSpec() { - TagsPostProcessorFactory.withAddBaseService(false) TagsPostProcessorFactory.withAddRemoteHostname(false) } @@ -41,7 +42,9 @@ abstract class DDCoreSpecification extends DDSpecification { if (useNoopStatsDClient()) { builder = builder.statsDClient(StatsDClient.NO_OP) } - return builder.strictTraceWrites(useStrictTraceWrites()) + return builder + .strictTraceWrites(useStrictTraceWrites()) + .preWriteTagsPostProcessors(emptyList()) } protected DDSpan buildSpan(long timestamp, CharSequence spanType, Map tags) { From 0c0dd5089e0110d3fde45b48a0d50822a30f1973 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Fri, 22 Aug 2025 11:57:50 +0200 Subject: [PATCH 2/3] Change method signature to fix ugly groovy issues --- dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java | 2 +- dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index bffc86bfd11..5e206159061 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -1140,7 +1140,7 @@ void write(final List trace) { for (DDSpan span : writtenTrace) { final DDSpanContext ddSpanContext = span.context(); preWritePostProcessorChain.processTags( - ddSpanContext.unsafeGetTags(), ddSpanContext, span.getLinks()); + ddSpanContext.unsafeGetTags(), ddSpanContext, span.getSpanLinks()); } boolean forceKeep = metricsAggregator.publish(writtenTrace); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java index 6745dd7c335..d60cf5488c1 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java @@ -826,7 +826,7 @@ public void addLink(AgentSpanLink link) { } } - List getLinks() { + List getSpanLinks() { return links; } From 4bc78b1d0aa123351daafd3ff287da9510cb8e69 Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Tue, 26 Aug 2025 11:21:59 +0200 Subject: [PATCH 3/3] feat(tracer): Introduce eager span tag processors --- .../java/datadog/trace/core/CoreSpan.java | 7 ++++ .../java/datadog/trace/core/CoreTracer.java | 29 +-------------- .../main/java/datadog/trace/core/DDSpan.java | 11 +++--- .../datadog/trace/core/DDSpanContext.java | 12 ++++--- .../TagsPostProcessorFactory.java | 36 ++++++++++++++++--- .../trace/common/metrics/SimpleSpan.groovy | 3 ++ .../trace/common/writer/TraceGenerator.groovy | 3 ++ .../datadog/trace/core/CoreTracerTest.groovy | 8 ++--- .../core/test/DDCoreSpecification.groovy | 7 ++-- .../groovy/TraceGenerator.groovy | 3 ++ 10 files changed, 66 insertions(+), 53 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreSpan.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreSpan.java index 68db791825a..ce088ee9512 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreSpan.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreSpan.java @@ -68,6 +68,13 @@ public interface CoreSpan> { CharSequence getType(); + /** + * Runs early {@link datadog.trace.core.tagprocessor.TagsPostProcessor} like base service and peer + * service computation. Such tags are needed before span serialization so they can’t be processed + * lazily as part of the {@link #processTagsAndBaggage(MetadataConsumer)} API. + */ + void processServiceTags(); + void processTagsAndBaggage(MetadataConsumer consumer); T setSamplingPriority(int samplingPriority, int samplingMechanism); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java index 5e206159061..59603f8819a 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java @@ -97,10 +97,6 @@ import datadog.trace.core.scopemanager.ContinuableScopeManager; import datadog.trace.core.taginterceptor.RuleFlags; import datadog.trace.core.taginterceptor.TagInterceptor; -import datadog.trace.core.tagprocessor.BaseServiceAdder; -import datadog.trace.core.tagprocessor.PeerServiceCalculator; -import datadog.trace.core.tagprocessor.PostProcessorChain; -import datadog.trace.core.tagprocessor.TagsPostProcessor; import datadog.trace.core.traceinterceptor.LatencyTraceInterceptor; import datadog.trace.lambda.LambdaHandler; import datadog.trace.relocate.api.RatelimitedLogger; @@ -203,8 +199,6 @@ public static CoreTracerBuilder builder() { private final boolean defaultSpanTagsNeedsIntercept; - public final PostProcessorChain preWritePostProcessorChain; - /** number of spans in a pending trace before they get flushed */ private final int partialFlushMinSpans; @@ -326,7 +320,6 @@ public static class CoreTracerBuilder { private StatsDClient statsDClient; private HealthMetrics healthMetrics; private TagInterceptor tagInterceptor; - private List preWriteTagsPostProcessors; private boolean strictTraceWrites; private InstrumentationGateway instrumentationGateway; private TimeSource timeSource; @@ -429,12 +422,6 @@ public CoreTracerBuilder tagInterceptor(TagInterceptor tagInterceptor) { return this; } - public CoreTracerBuilder preWriteTagsPostProcessors( - List preWriteTagsPostProcessors) { - this.preWriteTagsPostProcessors = preWriteTagsPostProcessors; - return this; - } - public CoreTracerBuilder healthMetrics(HealthMetrics healthMetrics) { this.healthMetrics = healthMetrics; return this; @@ -540,7 +527,6 @@ public CoreTracer build() { statsDClient, healthMetrics, tagInterceptor, - preWriteTagsPostProcessors, strictTraceWrites, instrumentationGateway, timeSource, @@ -601,7 +587,6 @@ private CoreTracer( statsDClient, healthMetrics, tagInterceptor, - null, strictTraceWrites, instrumentationGateway, timeSource, @@ -633,7 +618,6 @@ private CoreTracer( final StatsDClient statsDClient, final HealthMetrics healthMetrics, final TagInterceptor tagInterceptor, - final List preWriteTagsPostProcessors, final boolean strictTraceWrites, final InstrumentationGateway instrumentationGateway, final TimeSource timeSource, @@ -683,15 +667,6 @@ private CoreTracer( this.tagInterceptor = null == tagInterceptor ? new TagInterceptor(new RuleFlags(config)) : tagInterceptor; - if (preWriteTagsPostProcessors != null) { - this.preWritePostProcessorChain = - new PostProcessorChain(preWriteTagsPostProcessors.toArray(new TagsPostProcessor[0])); - } else { - this.preWritePostProcessorChain = - new PostProcessorChain( - new PeerServiceCalculator(), new BaseServiceAdder(Config.get().getServiceName())); - } - this.defaultSpanTags = defaultSpanTags; this.defaultSpanTagsNeedsIntercept = this.tagInterceptor.needsIntercept(this.defaultSpanTags); @@ -1138,9 +1113,7 @@ void write(final List trace) { // run early tag postprocessors before publishing to the metrics writer since peer / base // service are needed for (DDSpan span : writtenTrace) { - final DDSpanContext ddSpanContext = span.context(); - preWritePostProcessorChain.processTags( - ddSpanContext.unsafeGetTags(), ddSpanContext, span.getSpanLinks()); + span.processServiceTags(); } boolean forceKeep = metricsAggregator.publish(writtenTrace); diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java index d60cf5488c1..2a463042d34 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java @@ -694,7 +694,7 @@ public String getSpanType() { @Override public TagMap getTags() { - // This is an imutable copy of the tags + // This is an immutable copy of the tags return context.getTags(); } @@ -703,6 +703,11 @@ public CharSequence getType() { return context.getSpanType(); } + @Override + public void processServiceTags() { + context.earlyProcessTags(links); + } + @Override public void processTagsAndBaggage(final MetadataConsumer consumer) { context.processTagsAndBaggage(consumer, longRunningVersion, links); @@ -826,10 +831,6 @@ public void addLink(AgentSpanLink link) { } } - List getSpanLinks() { - return links; - } - // to be accessible in Spock spies, which the field wouldn't otherwise be public long getStartTimeNano() { return startTimeNano; diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java index 54bc0b0cccb..4c404ae0a38 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java @@ -897,10 +897,6 @@ public TagMap getTags() { } } - TagMap unsafeGetTags() { - return unsafeTags; - } - /** @see CoreSpan#getMetaStruct() */ public Map getMetaStruct() { return Collections.unmodifiableMap(metaStruct); @@ -925,11 +921,17 @@ public void setMetaStruct(final String field, final T value) { } } + public void earlyProcessTags(List links) { + synchronized (unsafeTags) { + TagsPostProcessorFactory.eagerProcessor().processTags(unsafeTags, this, links); + } + } + public void processTagsAndBaggage( final MetadataConsumer consumer, int longRunningVersion, List links) { synchronized (unsafeTags) { // Tags - TagsPostProcessorFactory.instance().processTags(unsafeTags, this, links); + TagsPostProcessorFactory.lazyProcessor().processTags(unsafeTags, this, links); String linksTag = DDSpanLink.toTag(links); if (linksTag != null) { diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java index ac68d940daa..2687211e5b2 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java @@ -5,10 +5,23 @@ import java.util.List; public final class TagsPostProcessorFactory { + private static boolean addBaseService = true; private static boolean addRemoteHostname = true; private static class Lazy { - private static TagsPostProcessor create() { + private static TagsPostProcessor eagerProcessor = createEagerChain(); + private static TagsPostProcessor lazyProcessor = createLazyChain(); + + private static TagsPostProcessor createEagerChain() { + final List processors = new ArrayList<>(2); + processors.add(new PeerServiceCalculator()); + if (addBaseService) { + processors.add(new BaseServiceAdder(Config.get().getServiceName())); + } + return new PostProcessorChain(processors.toArray(new TagsPostProcessor[0])); + } + + private static TagsPostProcessor createLazyChain() { final List processors = new ArrayList<>(7); processors.add(new QueryObfuscator(Config.get().getObfuscationQueryRegexp())); @@ -32,12 +45,24 @@ private static TagsPostProcessor create() { return new PostProcessorChain( processors.toArray(processors.toArray(new TagsPostProcessor[0]))); } + } - private static TagsPostProcessor instance = create(); + public static TagsPostProcessor eagerProcessor() { + return Lazy.eagerProcessor; } - public static TagsPostProcessor instance() { - return Lazy.instance; + public static TagsPostProcessor lazyProcessor() { + return Lazy.lazyProcessor; + } + + /** + * Mostly used for test purposes. + * + * @param enabled if false, {@link BaseServiceAdder} is not put in the chain. + */ + public static void withAddBaseService(boolean enabled) { + addBaseService = enabled; + Lazy.eagerProcessor = Lazy.createEagerChain(); } /** @@ -47,11 +72,12 @@ public static TagsPostProcessor instance() { */ public static void withAddRemoteHostname(boolean enabled) { addRemoteHostname = enabled; - Lazy.instance = Lazy.create(); + Lazy.lazyProcessor = Lazy.createLazyChain(); } /** Used for testing purposes. It reset the singleton and restore default options */ public static void reset() { + withAddBaseService(true); withAddRemoteHostname(true); } } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/common/metrics/SimpleSpan.groovy b/dd-trace-core/src/test/groovy/datadog/trace/common/metrics/SimpleSpan.groovy index 72250d64654..b16dd7a365e 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/common/metrics/SimpleSpan.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/common/metrics/SimpleSpan.groovy @@ -206,6 +206,9 @@ class SimpleSpan implements CoreSpan { return type } + @Override + void processServiceTags() {} + @Override void processTagsAndBaggage(MetadataConsumer consumer) {} diff --git a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/TraceGenerator.groovy b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/TraceGenerator.groovy index 0183844dc7f..d6a736ed3fe 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/common/writer/TraceGenerator.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/common/writer/TraceGenerator.groovy @@ -333,6 +333,9 @@ class TraceGenerator { return this.type } + @Override + void processServiceTags() {} + @Override void processTagsAndBaggage(MetadataConsumer consumer) { consumer.accept(metadata) diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/CoreTracerTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/CoreTracerTest.groovy index 560c33ba451..ba781cf010c 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/CoreTracerTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/CoreTracerTest.groovy @@ -19,7 +19,7 @@ import datadog.trace.common.sampling.Sampler import datadog.trace.common.writer.DDAgentWriter import datadog.trace.common.writer.ListWriter import datadog.trace.common.writer.LoggingWriter -import datadog.trace.core.tagprocessor.BaseServiceAdder +import datadog.trace.core.tagprocessor.TagsPostProcessorFactory import datadog.trace.core.test.DDCoreSpecification import okhttp3.HttpUrl import okhttp3.OkHttpClient @@ -544,10 +544,8 @@ class CoreTracerTest extends DDCoreSpecification { setup: injectSysConfig(SERVICE_NAME, "dd_service_name") injectSysConfig(VERSION, "1.0.0") - def tracer = tracerBuilder() - .writer(new ListWriter()) - .preWriteTagsPostProcessors([new BaseServiceAdder("dd_service_name")]) - .build() + TagsPostProcessorFactory.withAddBaseService(true) + def tracer = tracerBuilder().writer(new ListWriter()).build() when: def span = tracer.buildSpan("def").withTag(SERVICE_NAME,"foo").start() diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy index 7f06b783a27..5318c9b93c6 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/test/DDCoreSpecification.groovy @@ -1,7 +1,5 @@ package datadog.trace.core.test -import static java.util.Collections.emptyList - import datadog.trace.api.DDSpanId import datadog.trace.api.DDTraceId import datadog.trace.api.StatsDClient @@ -29,6 +27,7 @@ abstract class DDCoreSpecification extends DDSpecification { @Override void setupSpec() { + TagsPostProcessorFactory.withAddBaseService(false) TagsPostProcessorFactory.withAddRemoteHostname(false) } @@ -42,9 +41,7 @@ abstract class DDCoreSpecification extends DDSpecification { if (useNoopStatsDClient()) { builder = builder.statsDClient(StatsDClient.NO_OP) } - return builder - .strictTraceWrites(useStrictTraceWrites()) - .preWriteTagsPostProcessors(emptyList()) + return builder.strictTraceWrites(useStrictTraceWrites()) } protected DDSpan buildSpan(long timestamp, CharSequence spanType, Map tags) { diff --git a/dd-trace-core/src/traceAgentTest/groovy/TraceGenerator.groovy b/dd-trace-core/src/traceAgentTest/groovy/TraceGenerator.groovy index bc690a73ac0..1fabddd6e19 100644 --- a/dd-trace-core/src/traceAgentTest/groovy/TraceGenerator.groovy +++ b/dd-trace-core/src/traceAgentTest/groovy/TraceGenerator.groovy @@ -309,6 +309,9 @@ class TraceGenerator { return type } + @Override + void processServiceTags() {} + @Override void processTagsAndBaggage(MetadataConsumer consumer) { consumer.accept(metadata)