Skip to content

Conversation

sarahchen6
Copy link
Contributor

@sarahchen6 sarahchen6 commented Jun 9, 2025

What Does This Do

Upgrade gradle to v8.14.3

Motivation

Upgrade to the latest version of gradle

Additional Notes

Contributor Checklist

Jira ticket: https://datadoghq.atlassian.net/browse/LANGPLAT-660

@sarahchen6 sarahchen6 added type: enhancement Enhancements and improvements comp: tooling Build & Tooling labels Jun 9, 2025
@pr-commenter
Copy link

pr-commenter bot commented Jun 9, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master sarahchen6/upgrade-to-gradle-8.14
git_commit_date 1752076788 1752071639
git_commit_sha 54c1853 2c352f5
release_version 1.52.0-SNAPSHOT~54c1853735 1.51.0-SNAPSHOT~2c352f5d98
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1752079473 1752079473
ci_job_id 1020797318 1020797318
ci_pipeline_id 70054818 70054818
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-4-96utgg30 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-4-96utgg30 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 43 metrics, 10 unstable metrics.

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.51.0-SNAPSHOT~2c352f5d98, baseline=1.52.0-SNAPSHOT~54c1853735

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.001 s) : 0, 1001440
Total [baseline] (10.707 s) : 0, 10706619
Agent [candidate] (994.404 ms) : 0, 994404
Total [candidate] (10.58 s) : 0, 10580295
section appsec
Agent [baseline] (1.18 s) : 0, 1179569
Total [baseline] (10.847 s) : 0, 10846821
Agent [candidate] (1.182 s) : 0, 1181572
Total [candidate] (10.708 s) : 0, 10708200
section iast
Agent [baseline] (1.133 s) : 0, 1133441
Total [baseline] (10.792 s) : 0, 10791720
Agent [candidate] (1.132 s) : 0, 1131596
Total [candidate] (10.807 s) : 0, 10806992
section profiling
Agent [baseline] (1.241 s) : 0, 1240907
Total [baseline] (10.945 s) : 0, 10945259
Agent [candidate] (1.244 s) : 0, 1244005
Total [candidate] (10.941 s) : 0, 10941449
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.001 s -
Agent appsec 1.18 s 178.129 ms (17.8%)
Agent iast 1.133 s 132.0 ms (13.2%)
Agent profiling 1.241 s 239.467 ms (23.9%)
Total tracing 10.707 s -
Total appsec 10.847 s 140.201 ms (1.3%)
Total iast 10.792 s 85.1 ms (0.8%)
Total profiling 10.945 s 238.639 ms (2.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 994.404 ms -
Agent appsec 1.182 s 187.168 ms (18.8%)
Agent iast 1.132 s 137.193 ms (13.8%)
Agent profiling 1.244 s 249.602 ms (25.1%)
Total tracing 10.58 s -
Total appsec 10.708 s 127.905 ms (1.2%)
Total iast 10.807 s 226.697 ms (2.1%)
Total profiling 10.941 s 361.154 ms (3.4%)
gantt
    title petclinic - break down per module: candidate=1.51.0-SNAPSHOT~2c352f5d98, baseline=1.52.0-SNAPSHOT~54c1853735

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (691.17 ms) : 0, 691170
BytebuddyAgent [candidate] (686.752 ms) : 0, 686752
GlobalTracer [baseline] (244.271 ms) : 0, 244271
GlobalTracer [candidate] (241.642 ms) : 0, 241642
AppSec [baseline] (30.325 ms) : 0, 30325
AppSec [candidate] (30.29 ms) : 0, 30290
Debugger [baseline] (5.97 ms) : 0, 5970
Debugger [candidate] (6.049 ms) : 0, 6049
Remote Config [baseline] (680.369 µs) : 0, 680
Remote Config [candidate] (684.023 µs) : 0, 684
Telemetry [baseline] (8.265 ms) : 0, 8265
Telemetry [candidate] (8.197 ms) : 0, 8197
section appsec
BytebuddyAgent [baseline] (713.741 ms) : 0, 713741
BytebuddyAgent [candidate] (715.627 ms) : 0, 715627
GlobalTracer [baseline] (235.837 ms) : 0, 235837
GlobalTracer [candidate] (236.21 ms) : 0, 236210
IAST [baseline] (23.414 ms) : 0, 23414
IAST [candidate] (23.457 ms) : 0, 23457
AppSec [baseline] (171.362 ms) : 0, 171362
AppSec [candidate] (171.023 ms) : 0, 171023
Debugger [baseline] (5.699 ms) : 0, 5699
Debugger [candidate] (5.707 ms) : 0, 5707
Remote Config [baseline] (597.181 µs) : 0, 597
Remote Config [candidate] (594.841 µs) : 0, 595
Telemetry [baseline] (8.051 ms) : 0, 8051
Telemetry [candidate] (8.033 ms) : 0, 8033
section iast
BytebuddyAgent [baseline] (808.555 ms) : 0, 808555
BytebuddyAgent [candidate] (807.117 ms) : 0, 807117
GlobalTracer [baseline] (232.26 ms) : 0, 232260
GlobalTracer [candidate] (232.037 ms) : 0, 232037
IAST [baseline] (28.86 ms) : 0, 28860
IAST [candidate] (29.399 ms) : 0, 29399
AppSec [baseline] (28.829 ms) : 0, 28829
AppSec [candidate] (27.042 ms) : 0, 27042
Debugger [baseline] (5.743 ms) : 0, 5743
Debugger [candidate] (5.83 ms) : 0, 5830
Remote Config [baseline] (574.944 µs) : 0, 575
Remote Config [candidate] (585.86 µs) : 0, 586
Telemetry [baseline] (7.879 ms) : 0, 7879
Telemetry [candidate] (8.85 ms) : 0, 8850
section profiling
BytebuddyAgent [baseline] (676.205 ms) : 0, 676205
BytebuddyAgent [candidate] (678.216 ms) : 0, 678216
GlobalTracer [baseline] (360.225 ms) : 0, 360225
GlobalTracer [candidate] (360.798 ms) : 0, 360798
AppSec [baseline] (32.882 ms) : 0, 32882
AppSec [candidate] (33.062 ms) : 0, 33062
Debugger [baseline] (9.898 ms) : 0, 9898
Debugger [candidate] (11.252 ms) : 0, 11252
Remote Config [baseline] (665.773 µs) : 0, 666
Remote Config [candidate] (653.792 µs) : 0, 654
Telemetry [baseline] (9.485 ms) : 0, 9485
Telemetry [candidate] (7.99 ms) : 0, 7990
ProfilingAgent [baseline] (103.102 ms) : 0, 103102
ProfilingAgent [candidate] (103.573 ms) : 0, 103573
Profiling [baseline] (103.126 ms) : 0, 103126
Profiling [candidate] (103.597 ms) : 0, 103597
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.51.0-SNAPSHOT~2c352f5d98, baseline=1.52.0-SNAPSHOT~54c1853735

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (994.675 ms) : 0, 994675
Total [baseline] (8.547 s) : 0, 8547198
Agent [candidate] (1.004 s) : 0, 1003907
Total [candidate] (8.598 s) : 0, 8598469
section iast
Agent [baseline] (1.127 s) : 0, 1127250
Total [baseline] (9.247 s) : 0, 9246505
Agent [candidate] (1.141 s) : 0, 1141389
Total [candidate] (9.315 s) : 0, 9314974
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 994.675 ms -
Agent iast 1.127 s 132.574 ms (13.3%)
Total tracing 8.547 s -
Total iast 9.247 s 699.306 ms (8.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.004 s -
Agent iast 1.141 s 137.482 ms (13.7%)
Total tracing 8.598 s -
Total iast 9.315 s 716.505 ms (8.3%)
gantt
    title insecure-bank - break down per module: candidate=1.51.0-SNAPSHOT~2c352f5d98, baseline=1.52.0-SNAPSHOT~54c1853735

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (687.472 ms) : 0, 687472
BytebuddyAgent [candidate] (692.907 ms) : 0, 692907
GlobalTracer [baseline] (241.102 ms) : 0, 241102
GlobalTracer [candidate] (244.336 ms) : 0, 244336
AppSec [baseline] (30.283 ms) : 0, 30283
AppSec [candidate] (30.611 ms) : 0, 30611
Debugger [baseline] (6.003 ms) : 0, 6003
Debugger [candidate] (6.128 ms) : 0, 6128
Remote Config [baseline] (676.189 µs) : 0, 676
Remote Config [candidate] (680.21 µs) : 0, 680
Telemetry [baseline] (8.246 ms) : 0, 8246
Telemetry [candidate] (8.338 ms) : 0, 8338
section iast
BytebuddyAgent [baseline] (803.775 ms) : 0, 803775
BytebuddyAgent [candidate] (814.072 ms) : 0, 814072
GlobalTracer [baseline] (231.215 ms) : 0, 231215
GlobalTracer [candidate] (234.254 ms) : 0, 234254
AppSec [baseline] (30.507 ms) : 0, 30507
AppSec [candidate] (29.666 ms) : 0, 29666
Debugger [baseline] (6.593 ms) : 0, 6593
Debugger [candidate] (6.714 ms) : 0, 6714
Remote Config [baseline] (577.257 µs) : 0, 577
Remote Config [candidate] (595.731 µs) : 0, 596
Telemetry [baseline] (7.909 ms) : 0, 7909
Telemetry [candidate] (8.065 ms) : 0, 8065
IAST [baseline] (26.092 ms) : 0, 26092
IAST [candidate] (27.167 ms) : 0, 27167
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master sarahchen6/upgrade-to-gradle-8.14
git_commit_date 1752076788 1752071639
git_commit_sha 54c1853 2c352f5
release_version 1.52.0-SNAPSHOT~54c1853735 1.51.0-SNAPSHOT~2c352f5d98
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1752079150 1752079150
ci_job_id 1020797320 1020797320
ci_pipeline_id 70054818 70054818
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-5-3alees7e 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-5-3alees7e 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 2 performance improvements and 2 performance regressions! Performance is the same for 8 metrics, 12 unstable metrics.

scenario Δ mean http_req_duration Δ mean throughput candidate mean http_req_duration candidate mean throughput baseline mean http_req_duration baseline mean throughput
scenario:load:insecure-bank:profiling:high_load better
[-537.819µs; -203.979µs] or [-5.756%; -2.183%]
unstable
[-44.853op/s; +85.728op/s] or [-9.030%; +17.260%]
8.972ms 517.125op/s 9.343ms 496.688op/s
scenario:load:petclinic:tracing:high_load worse
[+0.924ms; +1.732ms] or [+2.126%; +3.985%]
unstable
[-11.124op/s; +4.674op/s] or [-10.334%; +4.342%]
44.792ms 104.425op/s 43.464ms 107.650op/s
scenario:load:petclinic:no_agent:high_load worse
[+0.902ms; +1.556ms] or [+2.469%; +4.258%]
unstable
[-14.409op/s; +2.821op/s] or [-11.124%; +2.178%]
37.777ms 123.737op/s 36.547ms 129.532op/s
scenario:load:petclinic:profiling:high_load better
[-2.312ms; -1.392ms] or [-4.730%; -2.848%]
unstable
[-4.525op/s; +9.677op/s] or [-4.668%; +9.984%]
47.025ms 99.500op/s 48.876ms 96.924op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.51.0-SNAPSHOT~2c352f5d98, baseline=1.52.0-SNAPSHOT~54c1853735
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.403 ms) : 4354, 4453
.   : milestone, 4403,
iast (9.59 ms) : 9432, 9749
.   : milestone, 9590,
iast_FULL (13.394 ms) : 13135, 13653
.   : milestone, 13394,
iast_GLOBAL (10.541 ms) : 10356, 10726
.   : milestone, 10541,
profiling (9.343 ms) : 9173, 9513
.   : milestone, 9343,
tracing (7.646 ms) : 7537, 7755
.   : milestone, 7646,
section candidate
no_agent (4.49 ms) : 4438, 4541
.   : milestone, 4490,
iast (9.773 ms) : 9598, 9948
.   : milestone, 9773,
iast_FULL (13.827 ms) : 13546, 14109
.   : milestone, 13827,
iast_GLOBAL (10.537 ms) : 10351, 10722
.   : milestone, 10537,
profiling (8.972 ms) : 8834, 9111
.   : milestone, 8972,
tracing (7.436 ms) : 7330, 7542
.   : milestone, 7436,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.403 ms [4.354 ms, 4.453 ms] -
iast 9.59 ms [9.432 ms, 9.749 ms] 5.187 ms (117.8%)
iast_FULL 13.394 ms [13.135 ms, 13.653 ms] 8.991 ms (204.2%)
iast_GLOBAL 10.541 ms [10.356 ms, 10.726 ms] 6.138 ms (139.4%)
profiling 9.343 ms [9.173 ms, 9.513 ms] 4.94 ms (112.2%)
tracing 7.646 ms [7.537 ms, 7.755 ms] 3.242 ms (73.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.49 ms [4.438 ms, 4.541 ms] -
iast 9.773 ms [9.598 ms, 9.948 ms] 5.283 ms (117.7%)
iast_FULL 13.827 ms [13.546 ms, 14.109 ms] 9.338 ms (208.0%)
iast_GLOBAL 10.537 ms [10.351 ms, 10.722 ms] 6.047 ms (134.7%)
profiling 8.972 ms [8.834 ms, 9.111 ms] 4.483 ms (99.8%)
tracing 7.436 ms [7.33 ms, 7.542 ms] 2.947 ms (65.6%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.51.0-SNAPSHOT~2c352f5d98, baseline=1.52.0-SNAPSHOT~54c1853735
    dateFormat X
    axisFormat %s
section baseline
no_agent (36.547 ms) : 36249, 36846
.   : milestone, 36547,
appsec (46.918 ms) : 46501, 47335
.   : milestone, 46918,
code_origins (44.875 ms) : 44495, 45256
.   : milestone, 44875,
iast (44.915 ms) : 44526, 45304
.   : milestone, 44915,
profiling (48.876 ms) : 48442, 49311
.   : milestone, 48876,
tracing (43.464 ms) : 43097, 43832
.   : milestone, 43464,
section candidate
no_agent (37.777 ms) : 37468, 38086
.   : milestone, 37777,
appsec (47.175 ms) : 46756, 47594
.   : milestone, 47175,
code_origins (44.857 ms) : 44466, 45248
.   : milestone, 44857,
iast (45.194 ms) : 44810, 45578
.   : milestone, 45194,
profiling (47.025 ms) : 46604, 47445
.   : milestone, 47025,
tracing (44.792 ms) : 44409, 45176
.   : milestone, 44792,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 36.547 ms [36.249 ms, 36.846 ms] -
appsec 46.918 ms [46.501 ms, 47.335 ms] 10.37 ms (28.4%)
code_origins 44.875 ms [44.495 ms, 45.256 ms] 8.328 ms (22.8%)
iast 44.915 ms [44.526 ms, 45.304 ms] 8.367 ms (22.9%)
profiling 48.876 ms [48.442 ms, 49.311 ms] 12.329 ms (33.7%)
tracing 43.464 ms [43.097 ms, 43.832 ms] 6.917 ms (18.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.777 ms [37.468 ms, 38.086 ms] -
appsec 47.175 ms [46.756 ms, 47.594 ms] 9.398 ms (24.9%)
code_origins 44.857 ms [44.466 ms, 45.248 ms] 7.08 ms (18.7%)
iast 45.194 ms [44.81 ms, 45.578 ms] 7.418 ms (19.6%)
profiling 47.025 ms [46.604 ms, 47.445 ms] 9.248 ms (24.5%)
tracing 44.792 ms [44.409 ms, 45.176 ms] 7.016 ms (18.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master sarahchen6/upgrade-to-gradle-8.14
git_commit_date 1752076788 1752071639
git_commit_sha 54c1853 2c352f5
release_version 1.52.0-SNAPSHOT~54c1853735 1.51.0-SNAPSHOT~2c352f5d98
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1752079651 1752079651
ci_job_id 1020797322 1020797322
ci_pipeline_id 70054818 70054818
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-3-0x9qhvnx 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-3-0x9qhvnx 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 0 unstable metrics.

Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.51.0-SNAPSHOT~2c352f5d98, baseline=1.52.0-SNAPSHOT~54c1853735
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.028 s) : 15028000, 15028000
.   : milestone, 15028000,
appsec (14.859 s) : 14859000, 14859000
.   : milestone, 14859000,
iast (18.561 s) : 18561000, 18561000
.   : milestone, 18561000,
iast_GLOBAL (18.164 s) : 18164000, 18164000
.   : milestone, 18164000,
profiling (15.304 s) : 15304000, 15304000
.   : milestone, 15304000,
tracing (14.909 s) : 14909000, 14909000
.   : milestone, 14909000,
section candidate
no_agent (15.351 s) : 15351000, 15351000
.   : milestone, 15351000,
appsec (14.532 s) : 14532000, 14532000
.   : milestone, 14532000,
iast (18.077 s) : 18077000, 18077000
.   : milestone, 18077000,
iast_GLOBAL (17.863 s) : 17863000, 17863000
.   : milestone, 17863000,
profiling (15.088 s) : 15088000, 15088000
.   : milestone, 15088000,
tracing (15.004 s) : 15004000, 15004000
.   : milestone, 15004000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.028 s [15.028 s, 15.028 s] -
appsec 14.859 s [14.859 s, 14.859 s] -169.0 ms (-1.1%)
iast 18.561 s [18.561 s, 18.561 s] 3.533 s (23.5%)
iast_GLOBAL 18.164 s [18.164 s, 18.164 s] 3.136 s (20.9%)
profiling 15.304 s [15.304 s, 15.304 s] 276.0 ms (1.8%)
tracing 14.909 s [14.909 s, 14.909 s] -119.0 ms (-0.8%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.351 s [15.351 s, 15.351 s] -
appsec 14.532 s [14.532 s, 14.532 s] -819.0 ms (-5.3%)
iast 18.077 s [18.077 s, 18.077 s] 2.726 s (17.8%)
iast_GLOBAL 17.863 s [17.863 s, 17.863 s] 2.512 s (16.4%)
profiling 15.088 s [15.088 s, 15.088 s] -263.0 ms (-1.7%)
tracing 15.004 s [15.004 s, 15.004 s] -347.0 ms (-2.3%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.51.0-SNAPSHOT~2c352f5d98, baseline=1.52.0-SNAPSHOT~54c1853735
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.474 ms) : 1462, 1485
.   : milestone, 1474,
appsec (2.42 ms) : 2370, 2470
.   : milestone, 2420,
iast (2.187 ms) : 2124, 2249
.   : milestone, 2187,
iast_GLOBAL (2.242 ms) : 2179, 2305
.   : milestone, 2242,
profiling (2.036 ms) : 1986, 2086
.   : milestone, 2036,
tracing (2.015 ms) : 1966, 2064
.   : milestone, 2015,
section candidate
no_agent (1.478 ms) : 1466, 1490
.   : milestone, 1478,
appsec (2.405 ms) : 2356, 2454
.   : milestone, 2405,
iast (2.191 ms) : 2129, 2252
.   : milestone, 2191,
iast_GLOBAL (2.238 ms) : 2176, 2300
.   : milestone, 2238,
profiling (2.064 ms) : 2013, 2116
.   : milestone, 2064,
tracing (2.021 ms) : 1973, 2070
.   : milestone, 2021,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.474 ms [1.462 ms, 1.485 ms] -
appsec 2.42 ms [2.37 ms, 2.47 ms] 946.327 µs (64.2%)
iast 2.187 ms [2.124 ms, 2.249 ms] 713.14 µs (48.4%)
iast_GLOBAL 2.242 ms [2.179 ms, 2.305 ms] 767.933 µs (52.1%)
profiling 2.036 ms [1.986 ms, 2.086 ms] 562.408 µs (38.2%)
tracing 2.015 ms [1.966 ms, 2.064 ms] 541.276 µs (36.7%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.478 ms [1.466 ms, 1.49 ms] -
appsec 2.405 ms [2.356 ms, 2.454 ms] 927.256 µs (62.7%)
iast 2.191 ms [2.129 ms, 2.252 ms] 712.701 µs (48.2%)
iast_GLOBAL 2.238 ms [2.176 ms, 2.3 ms] 760.023 µs (51.4%)
profiling 2.064 ms [2.013 ms, 2.116 ms] 586.255 µs (39.7%)
tracing 2.021 ms [1.973 ms, 2.07 ms] 543.374 µs (36.8%)

@sarahchen6 sarahchen6 changed the title Upgrade gradle to v8.14 Upgrade gradle to v8.14.2 Jun 10, 2025
@bric3
Copy link
Contributor

bric3 commented Jun 10, 2025

I believe the failure in gradle/java_no_deps.gradle can be fixed via

      if (currentJavaHomePath != testJvmHomePath) {
-       def jvmSpec = new SpecificInstallationToolchainSpec(project.getObjects(), file(testJvmHomePath))
+       def jvmSpec = new SpecificInstallationToolchainSpec(project.services.get(org.gradle.api.internal.provider.PropertyFactory), file(testJvmHomePath))
        // The provider always says that a value is present so we need to wrap it for proper error messages
        Provider<JavaLauncher> launcher = providers.provider {

This object is internal and has to use this internal API, there's no other options at this time I think.

@@ -7,7 +7,7 @@ okhttp-legacy = "[3.0,3.12.12]" # 3.12.x is last version to support Java7
okio = "1.17.6" # Datadog fork

spock = "2.3-groovy-3.0"
groovy = "3.0.17"
groovy = "3.0.24"
junit5 = "5.9.2"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When upgrading from Gradle <= 8.13, Groovy needs to be upgraded to 3.0.24: https://docs.gradle.org/current/userguide/upgrading_version_8.html#upgrade_to_groovy_3_0_24

@@ -27,7 +27,7 @@ final testTasks = scalaVersions.collect { scalaLibrary ->
def (major, minor) = version.split('_').collect(Integer.&valueOf)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes in this file address aesthetic comments in the previous Gradle upgrade #8886

this.collector = collector
}

@Override
@NonNull
MetricCollector<Metric> collector() {
MetricCollector<MetricCollector.Metric> collector() {
return collector
Copy link
Contributor Author

@sarahchen6 sarahchen6 Jun 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Received the error The type Metric is not a valid substitute for the bounded parameter <M extends datadog.trace.api.telemetry.MetricCollector$Metric>. To resolve this, we needed strict type resolution to distinguish MetricCollector.Metric and the imported datadog.telemetry.api.Metric class. This type strictness follows patterns to explicitly use MetricCollector.Metric throughout the file.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Much better without ambiguity ! TY


project.dependencies {
"${testSuiteName}Implementation"(project(project.path))
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Project dependencies was separated out due to the error The value for property 'dependencies.implementation' property 'dependencies' is final and cannot be changed any further. that prevented Gradle compilation. I think this is due to the deprecation of mutating configurations after observation that was introduced after 8.7: https://docs.gradle.org/current/userguide/upgrading_version_8.html#mutate_configuration_after_locking

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed this looks like it : gradle/gradle#28867

Maybe drop a comment there, to explain why the documented method did not work. I wasn't able to reliably reproduce this issue. So there might be something odd happending.

@@ -164,7 +164,7 @@ project.afterEvaluate {
def testJvmHomePath = getJavaHomePath(testJvmHome)
// Only change test JVM if it's not the one we are running the gradle build with
if (currentJavaHomePath != testJvmHomePath) {
def jvmSpec = new SpecificInstallationToolchainSpec(project.getObjects(), file(testJvmHomePath))
def jvmSpec = new SpecificInstallationToolchainSpec(project.services.get(org.gradle.api.internal.provider.PropertyFactory), file(testJvmHomePath))
// The provider always says that a value is present so we need to wrap it for proper error messages
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change is needed due to the introduced error groovy.lang.GroovyRuntimeException: Could not find matching constructor for: org.gradle.jvm.toolchain.internal.SpecificInstallationToolchainSpec(org.gradle.api.internal.model.DefaultObjectFactory, File). I'm not sure exactly where this comes from, but since this is part of Gradle's internal implementation, breaking changes can be made unannounced.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This internal Gradle type has changed twice its constructor signature since 8.5

runUnderTrace("listen$i") {}
}

@Override
void operationProgressed(Future<?> future, long progress, long total) throws Exception {
void operationProgressed(ProgressiveFuture<?> future, long progress, long total) throws Exception {
runUnderTrace("progress$i") {}
}
}
Copy link
Contributor Author

@sarahchen6 sarahchen6 Jun 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GenericProgressiveFutureListener argument extends ProgressiveFuture (ref), and with the Gradle upgrade, I get the error: The type Future is not a valid substitute for the bounded parameter <F extends io.netty.util.concurrent.ProgressiveFuture<?>>. Explicitly setting the type to ProgressiveFuture instead of Future resolved this.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For reference, there is a warning on master on this, suggesting to use ProgressiveFuture instead:
Image

@@ -55,7 +55,7 @@ public void methodAdvice(MethodTransformer transformer) {
public static class Construct {
@Advice.OnMethodExit(suppress = Throwable.class)
public static void afterConstructor(
@Advice.This final BuildScopeServices buildScopeServices,
@Advice.This final DefaultServiceRegistry buildScopeServices,
@Advice.Argument(0) final ServiceRegistry parentServices) {
CiVisibilityGradleListenerInjector_8_3.injectCiVisibilityGradleListener(
buildScopeServices, parentServices);
Copy link
Contributor Author

@sarahchen6 sarahchen6 Jun 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When trying to ./gradlew clean assemble, I ran across the error incompatible types: org.gradle.internal.service.scopes.BuildScopeServices cannot be converted to org.gradle.internal.service.DefaultServiceRegistry. Explicitly setting the buildScopeServices type to DefaultServiceRegistry (which is what injectCiVisibilityGradleListener takes) resolves this.

I'm thinking that the Gradle upgrade has led to stricter type resolution as seen from other changes needed in this PR 🤔

@@ -1,10 +1,9 @@

apply from: "$rootDir/gradle/java.gradle"

Copy link
Contributor Author

@sarahchen6 sarahchen6 Jun 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The updates to the latest version of JUnit Jupiter and Platform address the error:

org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-jupiter' failed to discover tests...
Caused by: org.junit.platform.commons.JUnitException: OutputDirectoryProvider not available; probably due to unaligned versions of the junit-platform-engine and junit-platform-launcher jars on the classpath/module path.

Not quite sure why the gradle upgrade initiated this, but others have faced the same problem (unplanned junit issue) and resolved it by updating versions.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to use the oldest possible version here, as we want to ensure JUnit 5 instrumentation is working for older releases. Could you please double-check which artifacts' version changes when Gradle version is bumped?
You can use commands like the one below:

./gradlew :dd-java-agent:instrumentation:junit-5.3:dependencyInsight --configuration testRuntimeClasspath --dependency org.junit

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nikita-tkachenko-datadog Maybe something you can do is to declare them as constraints in this case ?

https://docs.gradle.org/current/userguide/dependency_constraints.html

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to know. From the command you shared, it looks like 1.12.0 and 5.12.0 are the oldest versions we can pull in (e.g. org.junit.platform:junit-platform-suite-api:1.12.0 and org.junit.jupiter:junit-jupiter-api:5.12.0 get pulled in). I can change that now!

@bric3
Copy link
Contributor

bric3 commented Jun 11, 2025

You may want to merge latest master, there were fixes on the gradle daemon smoke tests, see #8955

Unsure about the muzzle ones.

@sarahchen6 sarahchen6 force-pushed the sarahchen6/upgrade-to-gradle-8.14 branch from d8450d8 to 0bb8eab Compare June 11, 2025 13:27
@@ -60,7 +60,7 @@ class GradleLauncherSmokeTest extends AbstractGradleTest {
])
String[] command = ["./gradlew", "--no-daemon", "--info"]
if (gradleDaemonCmdLineParams) {
command += "-Dorg.gradle.jvmargs=$gradleDaemonCmdLineParams"
command += "-Dorg.gradle.jvmargs=$gradleDaemonCmdLineParams".toString()
}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This resolves errors I was getting with assigning GStringImpl to String[] (others' experiences: apache issue, stackoverflow issue). Seems like this should be resolved with groovy 3.0.7+, but I guess not…

@Override
public String muzzleDirective() {
return "skipMuzzle";
}
}
Copy link
Contributor Author

@sarahchen6 sarahchen6 Jul 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The muzzle check for this instrumentation fails on a classloader mismatch when running on Gradle 8.14.3, but since this instrumentation targets Gradle 8.3, skip muzzle like what is done for 8_10_Instrumentation.

@bric3
Copy link
Contributor

bric3 commented Jul 4, 2025

FYI 8.14.3 was just released

@sarahchen6 sarahchen6 requested review from a team as code owners July 7, 2025 18:22
@sarahchen6 sarahchen6 requested review from nikita-tkachenko-datadog, AlexeyKuznetsov-DD, pawelchcki, ygree and bric3 and removed request for a team July 7, 2025 18:22
Comment on lines 35 to 37
testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.13.1'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.13.1'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.13.1'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall we also update grdale.lock for this and similar places?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will leave this to the github bot 😬

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Today I learned where it came from

@sarahchen6 sarahchen6 force-pushed the sarahchen6/upgrade-to-gradle-8.14 branch from dc12875 to 2f16060 Compare July 7, 2025 19:53
@sarahchen6 sarahchen6 force-pushed the sarahchen6/upgrade-to-gradle-8.14 branch from 2f16060 to 7e140f4 Compare July 7, 2025 20:45
Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not much feedback to give on this part 😓 I feel @bric3 to be way more knowledgeable on that part than me.

But mainly, I would make sure to get approval from CI Visibility before merging as changing their instrumentations.

Copy link
Contributor

@bric3 bric3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall it looks good ! Thank you for the upgrade !

Comment on lines 35 to 37
testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.13.1'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.13.1'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.13.1'
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Today I learned where it came from

@@ -1,10 +1,9 @@

apply from: "$rootDir/gradle/java.gradle"

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nikita-tkachenko-datadog Maybe something you can do is to declare them as constraints in this case ?

https://docs.gradle.org/current/userguide/dependency_constraints.html

runUnderTrace("listen$i") {}
}

@Override
void operationProgressed(Future<?> future, long progress, long total) throws Exception {
void operationProgressed(ProgressiveFuture<?> future, long progress, long total) throws Exception {
runUnderTrace("progress$i") {}
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For reference, there is a warning on master on this, suggesting to use ProgressiveFuture instead:
Image

Comment on lines -10 to -17
// 3.0.24 added support for JDK 24 via ASM 9.7.1
// https://groovy-lang.org/changelogs/changelog-3.0.24.html
// https://asm.ow2.io/versions.html#9.7.1
configurations.all {
resolutionStrategy {
force 'org.codehaus.groovy:groovy-all:3.0.24'
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: We may have to resurrect this code for JDK 25.

@@ -164,7 +164,7 @@ project.afterEvaluate {
def testJvmHomePath = getJavaHomePath(testJvmHome)
// Only change test JVM if it's not the one we are running the gradle build with
if (currentJavaHomePath != testJvmHomePath) {
def jvmSpec = new SpecificInstallationToolchainSpec(project.getObjects(), file(testJvmHomePath))
def jvmSpec = new SpecificInstallationToolchainSpec(project.services.get(org.gradle.api.internal.provider.PropertyFactory), file(testJvmHomePath))
// The provider always says that a value is present so we need to wrap it for proper error messages
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This internal Gradle type has changed twice its constructor signature since 8.5

this.collector = collector
}

@Override
@NonNull
MetricCollector<Metric> collector() {
MetricCollector<MetricCollector.Metric> collector() {
return collector
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Much better without ambiguity ! TY


project.dependencies {
"${testSuiteName}Implementation"(project(project.path))
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed this looks like it : gradle/gradle#28867

Maybe drop a comment there, to explain why the documented method did not work. I wasn't able to reliably reproduce this issue. So there might be something odd happending.

@sarahchen6 sarahchen6 merged commit 9519752 into master Jul 10, 2025
507 checks passed
@sarahchen6 sarahchen6 deleted the sarahchen6/upgrade-to-gradle-8.14 branch July 10, 2025 12:55
@github-actions github-actions bot added this to the 1.52.0 milestone Jul 10, 2025
@mcculls mcculls added the tag: no release notes Changes to exclude from release notes label Aug 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp: tooling Build & Tooling tag: no release notes Changes to exclude from release notes type: enhancement Enhancements and improvements
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants