From 10fc8e45a6ac5bd4be6b373adae38c1b7e1bfb38 Mon Sep 17 00:00:00 2001 From: Adrien Boitreaud Date: Tue, 2 Dec 2025 13:32:08 +0100 Subject: [PATCH 1/4] Duplicate service name in meta so it's not truncated --- .../instrumentation/spark/AbstractDatadogSparkListener.java | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/AbstractDatadogSparkListener.java b/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/AbstractDatadogSparkListener.java index 01e37f38c45..e8e84466991 100644 --- a/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/AbstractDatadogSparkListener.java +++ b/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/AbstractDatadogSparkListener.java @@ -1034,6 +1034,7 @@ private AgentTracer.SpanBuilder buildSparkSpan(String spanName, Properties prope builder.withServiceName(databricksServiceName); } else if (sparkServiceName != null) { builder.withServiceName(sparkServiceName); + builder.withTag("class_name", sparkServiceName); } addPropertiesTags(builder, properties); From 8ee86117598fda0b626069cdd83ffcb453acf987 Mon Sep 17 00:00:00 2001 From: Adrien Boitreaud Date: Fri, 5 Dec 2025 10:50:25 +0100 Subject: [PATCH 2/4] rename attr --- .../instrumentation/spark/AbstractDatadogSparkListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/AbstractDatadogSparkListener.java b/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/AbstractDatadogSparkListener.java index e8e84466991..cb7bb9fd721 100644 --- a/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/AbstractDatadogSparkListener.java +++ b/dd-java-agent/instrumentation/spark/src/main/java/datadog/trace/instrumentation/spark/AbstractDatadogSparkListener.java @@ -1034,7 +1034,7 @@ private AgentTracer.SpanBuilder buildSparkSpan(String spanName, Properties prope builder.withServiceName(databricksServiceName); } else if (sparkServiceName != null) { builder.withServiceName(sparkServiceName); - builder.withTag("class_name", sparkServiceName); + builder.withTag("service_name", sparkServiceName); } addPropertiesTags(builder, properties); From fa015b9701084040f8652d669511227eb3f92b41 Mon Sep 17 00:00:00 2001 From: Adrien Boitreaud Date: Fri, 5 Dec 2025 10:58:20 +0100 Subject: [PATCH 3/4] service_name attr in test --- .../spark/AbstractSparkTest.groovy | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy index b30e3ef0401..42073c0afe8 100644 --- a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy +++ b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy @@ -629,7 +629,7 @@ abstract class AbstractSparkTest extends InstrumentationSpecification { null | null | null | "(?!.*databricks).*" } - def "set the proper spark service name"(String ddService, boolean sparkAppNameAsService, String appName, boolean isRunningOnDatabricks, String expectedService) { + def "set the proper spark service name"(String ddService, boolean sparkAppNameAsService, String appName, boolean isRunningOnDatabricks, String expectedService, String expectedServiceNameTag) { setup: if (ddService != null) { injectSysConfig("dd.service", ddService) @@ -668,35 +668,39 @@ abstract class AbstractSparkTest extends InstrumentationSpecification { operationName "spark.application" spanType "spark" assert span.serviceName ==~ expectedService + assert span.tags["service_name"] == expectedServiceNameTag } } span { operationName "spark.sql" spanType "spark" assert span.serviceName ==~ expectedService + assert span.tags["service_name"] == expectedServiceNameTag } span { operationName "spark.job" spanType "spark" assert span.serviceName ==~ expectedService + assert span.tags["service_name"] == expectedServiceNameTag } span { operationName "spark.stage" spanType "spark" assert span.serviceName ==~ expectedService + assert span.tags["service_name"] == expectedServiceNameTag } } } where: - ddService | sparkAppNameAsService | appName | isRunningOnDatabricks | expectedService - "foobar" | true | "some_app" | false | "(?!.*some_app).*" - "spark" | true | "some_app" | false | "some_app" - "hadoop" | true | "some_app" | false | "some_app" - null | true | "some_app" | true | "(?!.*some_app).*" - null | true | "some_app" | false | "some_app" - null | false | "some_app" | false | "(?!.*some_app).*" - null | true | null | false | "(?!.*some_app).*" + ddService | sparkAppNameAsService | appName | isRunningOnDatabricks | expectedService | expectedServiceNameTag + "foobar" | true | "some_app" | false | "(?!.*some_app).*" | null + "spark" | true | "some_app" | false | "some_app" | "some_app" + "hadoop" | true | "some_app" | false | "some_app" | "some_app" + null | true | "some_app" | true | "(?!.*some_app).*" | null + null | true | "some_app" | false | "some_app" | "some_app" + null | false | "some_app" | false | "(?!.*some_app).*" | null + null | true | null | false | "(?!.*some_app).*" | null } From 4a4cea5fb5f2a7c8d82c6767b494f3a6ca104eb9 Mon Sep 17 00:00:00 2001 From: Adrien Boitreaud Date: Fri, 5 Dec 2025 16:51:38 +0100 Subject: [PATCH 4/4] fix test --- .../instrumentation/spark/AbstractSparkTest.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy index 42073c0afe8..c39f42f473c 100644 --- a/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy +++ b/dd-java-agent/instrumentation/spark/src/testFixtures/groovy/datadog/trace/instrumentation/spark/AbstractSparkTest.groovy @@ -668,26 +668,26 @@ abstract class AbstractSparkTest extends InstrumentationSpecification { operationName "spark.application" spanType "spark" assert span.serviceName ==~ expectedService - assert span.tags["service_name"] == expectedServiceNameTag + assert expectedServiceNameTag == null ? span.tags["service_name"] == null : span.tags["service_name"] ==~ expectedServiceNameTag } } span { operationName "spark.sql" spanType "spark" assert span.serviceName ==~ expectedService - assert span.tags["service_name"] == expectedServiceNameTag + assert expectedServiceNameTag == null ? span.tags["service_name"] == null : span.tags["service_name"] ==~ expectedServiceNameTag } span { operationName "spark.job" spanType "spark" assert span.serviceName ==~ expectedService - assert span.tags["service_name"] == expectedServiceNameTag + assert expectedServiceNameTag == null ? span.tags["service_name"] == null : span.tags["service_name"] ==~ expectedServiceNameTag } span { operationName "spark.stage" spanType "spark" assert span.serviceName ==~ expectedService - assert span.tags["service_name"] == expectedServiceNameTag + assert expectedServiceNameTag == null ? span.tags["service_name"] == null : span.tags["service_name"] ==~ expectedServiceNameTag } } } @@ -700,7 +700,7 @@ abstract class AbstractSparkTest extends InstrumentationSpecification { null | true | "some_app" | true | "(?!.*some_app).*" | null null | true | "some_app" | false | "some_app" | "some_app" null | false | "some_app" | false | "(?!.*some_app).*" | null - null | true | null | false | "(?!.*some_app).*" | null + null | true | null | false | "(?!.*some_app).*" | ".+" }