From 80a5cc60259955c56b83b3870d6d6c80f7d14421 Mon Sep 17 00:00:00 2001 From: Nikolay Martynov Date: Thu, 23 May 2019 20:07:57 -0400 Subject: [PATCH] Set kafka client service name to application default service name. So that spans inheriting from that client span have application service name rather than 'kafka' --- .../kafka_clients/KafkaDecorator.java | 20 ++++++++++++++----- .../src/test/groovy/KafkaClientTest.groovy | 2 +- .../src/test/groovy/KafkaStreamsTest.groovy | 16 +++++++-------- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaDecorator.java b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaDecorator.java index cbd222383a..8d02bc7d0d 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaDecorator.java +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/main/java/datadog/trace/instrumentation/kafka_clients/KafkaDecorator.java @@ -12,6 +12,11 @@ import org.apache.kafka.clients.producer.ProducerRecord; public abstract class KafkaDecorator extends ClientDecorator { public static final KafkaDecorator PRODUCER_DECORATE = new KafkaDecorator() { + @Override + protected String service() { + return "kafka"; + } + @Override protected String spanKind() { return Tags.SPAN_KIND_PRODUCER; @@ -25,6 +30,16 @@ public abstract class KafkaDecorator extends ClientDecorator { public static final KafkaDecorator CONSUMER_DECORATE = new KafkaDecorator() { + @Override + protected String service() { + /* + Use default service name. Common use-case here is to have consumer span parent + children spans in instrumented application. Since service name is inherited it makes + sense to default that to application service name rather than 'kafka'. + */ + return null; + } + @Override protected String spanKind() { return Tags.SPAN_KIND_CONSUMER; @@ -41,11 +56,6 @@ public abstract class KafkaDecorator extends ClientDecorator { return new String[] {"kafka"}; } - @Override - protected String service() { - return "kafka"; - } - @Override protected String component() { return "java-kafka"; diff --git a/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaClientTest.groovy b/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaClientTest.groovy index b22b6c30e4..49238f8357 100644 --- a/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaClientTest.groovy +++ b/dd-java-agent/instrumentation/kafka-clients-0.11/src/test/groovy/KafkaClientTest.groovy @@ -94,7 +94,7 @@ class KafkaClientTest extends AgentTestRunner { trace(1, 1) { // CONSUMER span 0 span(0) { - serviceName "kafka" + serviceName "unnamed-java-app" operationName "kafka.consume" resourceName "Consume Topic $SHARED_TOPIC" spanType "queue" diff --git a/dd-java-agent/instrumentation/kafka-streams-0.11/src/test/groovy/KafkaStreamsTest.groovy b/dd-java-agent/instrumentation/kafka-streams-0.11/src/test/groovy/KafkaStreamsTest.groovy index d74433ec11..cc8a7ce2c1 100644 --- a/dd-java-agent/instrumentation/kafka-streams-0.11/src/test/groovy/KafkaStreamsTest.groovy +++ b/dd-java-agent/instrumentation/kafka-streams-0.11/src/test/groovy/KafkaStreamsTest.groovy @@ -80,13 +80,13 @@ class KafkaStreamsTest extends AgentTestRunner { KStream textLines = builder.stream(STREAM_PENDING) def values = textLines .mapValues(new ValueMapper() { - @Override - String apply(String textLine) { - TEST_WRITER.waitForTraces(1) // ensure consistent ordering of traces - getTestTracer().activeSpan().setTag("asdf", "testing") - return textLine.toLowerCase() - } - }) + @Override + String apply(String textLine) { + TEST_WRITER.waitForTraces(1) // ensure consistent ordering of traces + getTestTracer().activeSpan().setTag("asdf", "testing") + return textLine.toLowerCase() + } + }) KafkaStreams streams try { @@ -172,7 +172,7 @@ class KafkaStreamsTest extends AgentTestRunner { trace(2, 1) { // CONSUMER span 0 span(0) { - serviceName "kafka" + serviceName "unnamed-java-app" operationName "kafka.consume" resourceName "Consume Topic $STREAM_PROCESSED" spanType "queue"