Report dd-java-agent itself as a Maven dependency in SCA telemetry#10975
Conversation
Generate META-INF/maven/com.datadoghq/dd-java-agent/pom.properties at build time so the SCA dependency pipeline (JarReader → DependencyResolver) detects com.datadoghq:dd-java-agent in the APP_DEPENDENCIES_LOADED telemetry events. Add a unit test in DependencyResolverSpecification verifying the resolver correctly parses the generated pom.properties, and extend the AbstractServerSmokeTest tracer-dependency assertion to include com.datadoghq:dd-java-agent so all server smoke tests validate this end-to-end against the real shadow JAR. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 63 metrics, 8 unstable metrics. Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.61.0-SNAPSHOT~f34cb203d4, baseline=1.61.0-SNAPSHOT~517a89d1ec3
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.054 s) : 0, 1053658
Total [baseline] (8.899 s) : 0, 8898939
Agent [candidate] (1.063 s) : 0, 1062643
Total [candidate] (8.905 s) : 0, 8904912
section iast
Agent [baseline] (1.232 s) : 0, 1231997
Total [baseline] (9.584 s) : 0, 9584350
Agent [candidate] (1.236 s) : 0, 1235634
Total [candidate] (9.598 s) : 0, 9598410
gantt
title insecure-bank - break down per module: candidate=1.61.0-SNAPSHOT~f34cb203d4, baseline=1.61.0-SNAPSHOT~517a89d1ec3
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.216 ms) : 0, 1216
crashtracking [candidate] (1.229 ms) : 0, 1229
BytebuddyAgent [baseline] (627.094 ms) : 0, 627094
BytebuddyAgent [candidate] (632.248 ms) : 0, 632248
AgentMeter [baseline] (29.377 ms) : 0, 29377
AgentMeter [candidate] (29.575 ms) : 0, 29575
GlobalTracer [baseline] (256.584 ms) : 0, 256584
GlobalTracer [candidate] (258.915 ms) : 0, 258915
AppSec [baseline] (31.686 ms) : 0, 31686
AppSec [candidate] (31.985 ms) : 0, 31985
Debugger [baseline] (59.418 ms) : 0, 59418
Debugger [candidate] (60.13 ms) : 0, 60130
Remote Config [baseline] (586.332 µs) : 0, 586
Remote Config [candidate] (586.113 µs) : 0, 586
Telemetry [baseline] (8.043 ms) : 0, 8043
Telemetry [candidate] (8.111 ms) : 0, 8111
Flare Poller [baseline] (3.507 ms) : 0, 3507
Flare Poller [candidate] (3.544 ms) : 0, 3544
section iast
crashtracking [baseline] (1.218 ms) : 0, 1218
crashtracking [candidate] (1.224 ms) : 0, 1224
BytebuddyAgent [baseline] (799.31 ms) : 0, 799310
BytebuddyAgent [candidate] (801.489 ms) : 0, 801489
AgentMeter [baseline] (11.448 ms) : 0, 11448
AgentMeter [candidate] (11.44 ms) : 0, 11440
GlobalTracer [baseline] (248.685 ms) : 0, 248685
GlobalTracer [candidate] (249.506 ms) : 0, 249506
IAST [baseline] (25.446 ms) : 0, 25446
IAST [candidate] (25.42 ms) : 0, 25420
AppSec [baseline] (26.696 ms) : 0, 26696
AppSec [candidate] (26.578 ms) : 0, 26578
Debugger [baseline] (68.564 ms) : 0, 68564
Debugger [candidate] (68.385 ms) : 0, 68385
Remote Config [baseline] (545.911 µs) : 0, 546
Remote Config [candidate] (527.101 µs) : 0, 527
Telemetry [baseline] (10.45 ms) : 0, 10450
Telemetry [candidate] (11.074 ms) : 0, 11074
Flare Poller [baseline] (3.429 ms) : 0, 3429
Flare Poller [candidate] (3.579 ms) : 0, 3579
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.61.0-SNAPSHOT~f34cb203d4, baseline=1.61.0-SNAPSHOT~517a89d1ec3
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.06 s) : 0, 1060497
Total [baseline] (11.159 s) : 0, 11159278
Agent [candidate] (1.066 s) : 0, 1066092
Total [candidate] (11.207 s) : 0, 11207240
section appsec
Agent [baseline] (1.246 s) : 0, 1246304
Total [baseline] (11.177 s) : 0, 11176918
Agent [candidate] (1.269 s) : 0, 1269020
Total [candidate] (11.225 s) : 0, 11225231
section iast
Agent [baseline] (1.228 s) : 0, 1227745
Total [baseline] (10.635 s) : 0, 10635140
Agent [candidate] (1.243 s) : 0, 1242589
Total [candidate] (11.301 s) : 0, 11300745
section profiling
Agent [baseline] (1.185 s) : 0, 1185329
Total [baseline] (11.085 s) : 0, 11084631
Agent [candidate] (1.189 s) : 0, 1189384
Total [candidate] (11.052 s) : 0, 11051624
gantt
title petclinic - break down per module: candidate=1.61.0-SNAPSHOT~f34cb203d4, baseline=1.61.0-SNAPSHOT~517a89d1ec3
dateFormat X
axisFormat %s
section tracing
crashtracking [baseline] (1.243 ms) : 0, 1243
crashtracking [candidate] (1.222 ms) : 0, 1222
BytebuddyAgent [baseline] (629.869 ms) : 0, 629869
BytebuddyAgent [candidate] (633.149 ms) : 0, 633149
AgentMeter [baseline] (29.501 ms) : 0, 29501
AgentMeter [candidate] (29.775 ms) : 0, 29775
GlobalTracer [baseline] (257.794 ms) : 0, 257794
GlobalTracer [candidate] (259.822 ms) : 0, 259822
AppSec [baseline] (31.8 ms) : 0, 31800
AppSec [candidate] (32.183 ms) : 0, 32183
Debugger [baseline] (60.274 ms) : 0, 60274
Debugger [candidate] (61.3 ms) : 0, 61300
Remote Config [baseline] (596.07 µs) : 0, 596
Remote Config [candidate] (602.376 µs) : 0, 602
Telemetry [baseline] (8.072 ms) : 0, 8072
Telemetry [candidate] (8.099 ms) : 0, 8099
Flare Poller [baseline] (5.09 ms) : 0, 5090
Flare Poller [candidate] (3.587 ms) : 0, 3587
section appsec
crashtracking [baseline] (1.217 ms) : 0, 1217
crashtracking [candidate] (1.246 ms) : 0, 1246
BytebuddyAgent [baseline] (657.569 ms) : 0, 657569
BytebuddyAgent [candidate] (671.028 ms) : 0, 671028
AgentMeter [baseline] (12.189 ms) : 0, 12189
AgentMeter [candidate] (12.392 ms) : 0, 12392
GlobalTracer [baseline] (257.651 ms) : 0, 257651
GlobalTracer [candidate] (262.503 ms) : 0, 262503
AppSec [baseline] (177.973 ms) : 0, 177973
AppSec [candidate] (179.66 ms) : 0, 179660
Debugger [baseline] (65.565 ms) : 0, 65565
Debugger [candidate] (67.755 ms) : 0, 67755
Remote Config [baseline] (643.604 µs) : 0, 644
Remote Config [candidate] (669.604 µs) : 0, 670
Telemetry [baseline] (8.627 ms) : 0, 8627
Telemetry [candidate] (8.58 ms) : 0, 8580
Flare Poller [baseline] (4.49 ms) : 0, 4490
Flare Poller [candidate] (3.653 ms) : 0, 3653
IAST [baseline] (24.076 ms) : 0, 24076
IAST [candidate] (24.614 ms) : 0, 24614
section iast
crashtracking [baseline] (1.216 ms) : 0, 1216
crashtracking [candidate] (1.229 ms) : 0, 1229
BytebuddyAgent [baseline] (796.058 ms) : 0, 796058
BytebuddyAgent [candidate] (806.603 ms) : 0, 806603
AgentMeter [baseline] (11.467 ms) : 0, 11467
AgentMeter [candidate] (11.574 ms) : 0, 11574
GlobalTracer [baseline] (247.775 ms) : 0, 247775
GlobalTracer [candidate] (250.253 ms) : 0, 250253
AppSec [baseline] (26.447 ms) : 0, 26447
AppSec [candidate] (26.852 ms) : 0, 26852
Debugger [baseline] (69.474 ms) : 0, 69474
Debugger [candidate] (70.258 ms) : 0, 70258
Remote Config [baseline] (525.048 µs) : 0, 525
Remote Config [candidate] (528.634 µs) : 0, 529
Telemetry [baseline] (9.739 ms) : 0, 9739
Telemetry [candidate] (9.796 ms) : 0, 9796
Flare Poller [baseline] (3.462 ms) : 0, 3462
Flare Poller [candidate] (3.406 ms) : 0, 3406
IAST [baseline] (25.355 ms) : 0, 25355
IAST [candidate] (25.613 ms) : 0, 25613
section profiling
ProfilingAgent [baseline] (94.166 ms) : 0, 94166
ProfilingAgent [candidate] (94.296 ms) : 0, 94296
crashtracking [baseline] (1.187 ms) : 0, 1187
crashtracking [candidate] (1.178 ms) : 0, 1178
BytebuddyAgent [baseline] (684.254 ms) : 0, 684254
BytebuddyAgent [candidate] (686.724 ms) : 0, 686724
AgentMeter [baseline] (9.025 ms) : 0, 9025
AgentMeter [candidate] (9.008 ms) : 0, 9008
GlobalTracer [baseline] (215.32 ms) : 0, 215320
GlobalTracer [candidate] (215.839 ms) : 0, 215839
AppSec [baseline] (32.3 ms) : 0, 32300
AppSec [candidate] (32.32 ms) : 0, 32320
Debugger [baseline] (65.41 ms) : 0, 65410
Debugger [candidate] (66.034 ms) : 0, 66034
Remote Config [baseline] (565.871 µs) : 0, 566
Remote Config [candidate] (568.005 µs) : 0, 568
Telemetry [baseline] (7.742 ms) : 0, 7742
Telemetry [candidate] (7.8 ms) : 0, 7800
Flare Poller [baseline] (4.262 ms) : 0, 4262
Flare Poller [candidate] (4.312 ms) : 0, 4312
Profiling [baseline] (94.727 ms) : 0, 94727
Profiling [candidate] (94.843 ms) : 0, 94843
LoadParameters
See matching parameters
SummaryFound 3 performance improvements and 4 performance regressions! Performance is the same for 11 metrics, 18 unstable metrics.
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.61.0-SNAPSHOT~f34cb203d4, baseline=1.61.0-SNAPSHOT~517a89d1ec3
dateFormat X
axisFormat %s
section baseline
no_agent (18.249 ms) : 18058, 18439
. : milestone, 18249,
appsec (18.71 ms) : 18515, 18905
. : milestone, 18710,
code_origins (17.893 ms) : 17716, 18071
. : milestone, 17893,
iast (19.831 ms) : 19632, 20030
. : milestone, 19831,
profiling (18.497 ms) : 18314, 18680
. : milestone, 18497,
tracing (17.77 ms) : 17594, 17947
. : milestone, 17770,
section candidate
no_agent (19.416 ms) : 19216, 19617
. : milestone, 19416,
appsec (18.587 ms) : 18399, 18775
. : milestone, 18587,
code_origins (17.893 ms) : 17716, 18070
. : milestone, 17893,
iast (17.475 ms) : 17304, 17646
. : milestone, 17475,
profiling (19.531 ms) : 19337, 19725
. : milestone, 19531,
tracing (17.725 ms) : 17553, 17898
. : milestone, 17725,
Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.61.0-SNAPSHOT~f34cb203d4, baseline=1.61.0-SNAPSHOT~517a89d1ec3
dateFormat X
axisFormat %s
section baseline
no_agent (1.17 ms) : 1159, 1182
. : milestone, 1170,
iast (3.171 ms) : 3128, 3213
. : milestone, 3171,
iast_FULL (5.717 ms) : 5661, 5773
. : milestone, 5717,
iast_GLOBAL (3.74 ms) : 3676, 3805
. : milestone, 3740,
profiling (1.941 ms) : 1923, 1959
. : milestone, 1941,
tracing (1.798 ms) : 1784, 1813
. : milestone, 1798,
section candidate
no_agent (1.189 ms) : 1178, 1201
. : milestone, 1189,
iast (3.13 ms) : 3090, 3170
. : milestone, 3130,
iast_FULL (6.167 ms) : 6104, 6230
. : milestone, 6167,
iast_GLOBAL (3.549 ms) : 3484, 3615
. : milestone, 3549,
profiling (2.287 ms) : 2264, 2310
. : milestone, 2287,
tracing (1.789 ms) : 1773, 1804
. : milestone, 1789,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 10 metrics, 2 unstable metrics. Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.61.0-SNAPSHOT~f34cb203d4, baseline=1.61.0-SNAPSHOT~517a89d1ec3
dateFormat X
axisFormat %s
section baseline
no_agent (1.488 ms) : 1476, 1500
. : milestone, 1488,
appsec (3.758 ms) : 3541, 3975
. : milestone, 3758,
iast (2.263 ms) : 2194, 2332
. : milestone, 2263,
iast_GLOBAL (2.305 ms) : 2236, 2374
. : milestone, 2305,
profiling (2.538 ms) : 2367, 2709
. : milestone, 2538,
tracing (2.065 ms) : 2012, 2118
. : milestone, 2065,
section candidate
no_agent (1.481 ms) : 1469, 1493
. : milestone, 1481,
appsec (3.824 ms) : 3602, 4046
. : milestone, 3824,
iast (2.258 ms) : 2189, 2327
. : milestone, 2258,
iast_GLOBAL (2.303 ms) : 2234, 2372
. : milestone, 2303,
profiling (2.091 ms) : 2036, 2145
. : milestone, 2091,
tracing (2.069 ms) : 2015, 2122
. : milestone, 2069,
Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.61.0-SNAPSHOT~f34cb203d4, baseline=1.61.0-SNAPSHOT~517a89d1ec3
dateFormat X
axisFormat %s
section baseline
no_agent (14.707 s) : 14707000, 14707000
. : milestone, 14707000,
appsec (14.904 s) : 14904000, 14904000
. : milestone, 14904000,
iast (18.303 s) : 18303000, 18303000
. : milestone, 18303000,
iast_GLOBAL (17.723 s) : 17723000, 17723000
. : milestone, 17723000,
profiling (14.757 s) : 14757000, 14757000
. : milestone, 14757000,
tracing (14.793 s) : 14793000, 14793000
. : milestone, 14793000,
section candidate
no_agent (15.587 s) : 15587000, 15587000
. : milestone, 15587000,
appsec (14.879 s) : 14879000, 14879000
. : milestone, 14879000,
iast (18.477 s) : 18477000, 18477000
. : milestone, 18477000,
iast_GLOBAL (17.87 s) : 17870000, 17870000
. : milestone, 17870000,
profiling (14.918 s) : 14918000, 14918000
. : milestone, 14918000,
tracing (14.767 s) : 14767000, 14767000
. : milestone, 14767000,
|
dd-java-agent/build.gradle
Outdated
| } | ||
| sourceSets.main.resources.srcDir(generateAgentJarIndex) | ||
|
|
||
| def generatePomProperties = tasks.register('generatePomProperties') { |
There was a problem hiding this comment.
I wonder if there isn't some built-in Gradle option to generate this.
But in the absence of it (cc @bric3?), looks good to me.
There was a problem hiding this comment.
I added @bric3 as reviewer about the task definition (input / output / cache / ordering / etc...)
There was a problem hiding this comment.
todo: Good catch @smola, indeed this task can be refactored to use the org.gradle.api.tasks.WriteProperties task, that could looks like:
def pomPropertiesOutputDir = project.layout.buildDirectory.dir("generated/maven-metadata")
def generatePomProperties = tasks.register('generatePomProperties', WriteProperties) {
destinationFile = pomPropertiesOutputDir.map { it.file("META-INF/maven/com.datadoghq/dd-java-agent/pom.properties") }
property("groupId", "com.datadoghq")
property("artifactId", "dd-java-agent")
property("version", project.providers.provider { project.version.toString() })
}
sourceSets.main.resources.srcDir(pomPropertiesOutputDir)
telemetry/src/test/groovy/datadog/telemetry/dependency/DependencyResolverSpecification.groovy
Outdated
Show resolved
Hide resolved
…ncyResolverSpecification.groovy Co-authored-by: Brice Dutheil <brice.dutheil@gmail.com>
- Use built-in Gradle WriteProperties task instead of custom doLast
action, which handles inputs/outputs/caching natively
- Fix Groovy with{} usage in test: apply it on ZipOutputStream
(not ZipEntry as incorrectly suggested in the upstream commit)
Use the built-in Gradle WriteProperties task as suggested by bric3.
Instead of splitting the output directory into a separate variable and
adding an explicit dependsOn (which bric3 did not suggest), derive the
srcDir provider from the task itself via generatePomProperties.map{...}.
This way Gradle infers the processResources -> generatePomProperties
dependency automatically, without extra boilerplate.
Follow the same pattern as includedAgentDir/includedJarFileTree: - declare pomPropertiesDir and pomPropertiesFileTree near the top - add dependsOn(pomPropertiesFileTree) to processResources - declare main.resources.srcDir(pomPropertiesDir) in the sourceSets block - register generatePomProperties (WriteProperties) near generateAgentJarIndex - wire pomPropertiesFileTree.builtBy(generatePomProperties) This avoids the need for a task-provider-mapped srcDir since WriteProperties outputs a single file (not a directory), so the fileTree + builtBy approach is the correct way to express the dependency.
Replace two separate srcDir calls with a single srcDirs(includedAgentDir, pomPropertiesDir) as suggested by bric3.
includedAgentDir was registered twice — once via srcDir and again inside srcDirs. Replace both with a single srcDirs call.
sourcesJar includes main.resources srcDirs (including pomPropertiesDir) but had no dependency on generatePomProperties. Add explicit dependsOn(pomPropertiesFileTree) consistent with the processResources wiring.
|
/merge |
|
View all feedbacks in Devflow UI.
The expected merge time in
|
|
/merge |
|
View all feedbacks in Devflow UI.
PR already in the queue with status in_progress |
e0914eb
into
master
What Does This Do
Adds a
generatePomPropertiesGradle task that generatesMETA-INF/maven/com.datadoghq/dd-java-agent/pom.propertiesat build time withgroupId,artifactId, andversion. The output directory is wired as a resource source dir so it is automatically included in the shadow JAR.Motivation
The SCA dependency pipeline (
LocationsCollectingTransformer→DependencyResolver→JarReader) detects dependencies by readingMETA-INF/maven/**/pom.propertiesfrom JARs. Without its ownpom.properties, the tracer was invisible to its own SCA inventory — the tool couldn't report the version of itself that was running.Jira ticket: APPSEC-61920