Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Preserve getQualifier from spring scheduling runnables #8293

Merged
merged 3 commits into from
Jan 28, 2025

Conversation

amarziali
Copy link
Collaborator

What Does This Do

Starting from spring scheduling 6.1 the @Scheduled annotation allows specifying the scheduler to be used in case there are more than one defined in the bean factory.

Since we are wrapping those Runnable (they are SchedulingAwareRunnable) the spring annotation postprocessor does not recognise them being of this type and so it does not call getQualifier that is returning the scheduler to be used.
Hence a default thread pool scheduler is used. This causes the instrumented application not to use the right schedulers.

This fix is subclassing correctly the Runnable and when getQualifier is defined (starting from 6.1) delegate that call to the wrapped object

Motivation

Additional Notes

Solves #7830

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@amarziali amarziali requested a review from a team as a code owner January 28, 2025 09:46
@amarziali amarziali added type: bug inst: spring Spring instrumentation labels Jan 28, 2025
Copy link
Contributor

Hi! 👋 Thanks for your pull request! 🎉

To help us review it, please make sure to:

  • Add at least one type, and one component or instrumentation label to the pull request

If you need help, please check our contributing guidelines.

@amarziali amarziali force-pushed the andrea.marziali/scheduling-fix branch from f689e83 to 9a74332 Compare January 28, 2025 09:59
@amarziali amarziali force-pushed the andrea.marziali/scheduling-fix branch from 9a74332 to de83937 Compare January 28, 2025 10:14
@pr-commenter
Copy link

pr-commenter bot commented Jan 28, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/scheduling-fix
git_commit_date 1738071038 1738074070
git_commit_sha 95f2490 10105ac
release_version 1.46.0-SNAPSHOT~95f2490e06 1.46.0-SNAPSHOT~10105acd79
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1738076665 1738076665
ci_job_id 783520357 783520357
ci_pipeline_id 54191976 54191976
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-s6tnoqam-project-304-concurrent-0-y15mex3w 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux Linux runner-s6tnoqam-project-304-concurrent-0-y15mex3w 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None
variant iast iast

Summary

Found 1 performance improvements and 3 performance regressions! Performance is the same for 50 metrics, 9 unstable metrics.

scenario Δ mean execution_time candidate mean execution_time baseline mean execution_time
scenario:startup:insecure-bank:iast:Remote Config worse
[+14.112µs; +48.079µs] or [+2.256%; +7.685%]
656.733µs 625.637µs
scenario:startup:insecure-bank:iast_TELEMETRY_OFF:Remote Config worse
[+13.064µs; +74.533µs] or [+2.089%; +11.920%]
669.089µs 625.291µs
scenario:startup:petclinic:appsec:IAST better
[-2.667ms; -1.839ms] or [-12.304%; -8.481%]
19.426ms 21.679ms
scenario:startup:petclinic:iast:Remote Config worse
[+22.614µs; +75.747µs] or [+3.635%; +12.176%]
671.274µs 622.094µs
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.46.0-SNAPSHOT~10105acd79, baseline=1.46.0-SNAPSHOT~95f2490e06

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.036 s) : 0, 1036311
Total [baseline] (10.451 s) : 0, 10451018
Agent [candidate] (1.041 s) : 0, 1040796
Total [candidate] (10.428 s) : 0, 10427838
section appsec
Agent [baseline] (1.181 s) : 0, 1180592
Total [baseline] (10.763 s) : 0, 10763459
Agent [candidate] (1.183 s) : 0, 1182662
Total [candidate] (10.73 s) : 0, 10730377
section iast
Agent [baseline] (1.168 s) : 0, 1167634
Total [baseline] (10.947 s) : 0, 10947415
Agent [candidate] (1.169 s) : 0, 1169480
Total [candidate] (10.907 s) : 0, 10907256
section profiling
Agent [baseline] (1.266 s) : 0, 1265613
Total [baseline] (10.912 s) : 0, 10911857
Agent [candidate] (1.259 s) : 0, 1258709
Total [candidate] (10.924 s) : 0, 10923532
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.036 s -
Agent appsec 1.181 s 144.281 ms (13.9%)
Agent iast 1.168 s 131.323 ms (12.7%)
Agent profiling 1.266 s 229.302 ms (22.1%)
Total tracing 10.451 s -
Total appsec 10.763 s 312.441 ms (3.0%)
Total iast 10.947 s 496.397 ms (4.7%)
Total profiling 10.912 s 460.839 ms (4.4%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.041 s -
Agent appsec 1.183 s 141.867 ms (13.6%)
Agent iast 1.169 s 128.684 ms (12.4%)
Agent profiling 1.259 s 217.914 ms (20.9%)
Total tracing 10.428 s -
Total appsec 10.73 s 302.538 ms (2.9%)
Total iast 10.907 s 479.418 ms (4.6%)
Total profiling 10.924 s 495.693 ms (4.8%)
gantt
    title petclinic - break down per module: candidate=1.46.0-SNAPSHOT~10105acd79, baseline=1.46.0-SNAPSHOT~95f2490e06

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (714.8 ms) : 0, 714800
BytebuddyAgent [candidate] (715.827 ms) : 0, 715827
GlobalTracer [baseline] (239.593 ms) : 0, 239593
GlobalTracer [candidate] (240.322 ms) : 0, 240322
AppSec [baseline] (55.336 ms) : 0, 55336
AppSec [candidate] (55.424 ms) : 0, 55424
Remote Config [baseline] (714.396 µs) : 0, 714
Remote Config [candidate] (719.39 µs) : 0, 719
Telemetry [baseline] (10.674 ms) : 0, 10674
Telemetry [candidate] (13.204 ms) : 0, 13204
section appsec
BytebuddyAgent [baseline] (731.139 ms) : 0, 731139
BytebuddyAgent [candidate] (733.598 ms) : 0, 733598
GlobalTracer [baseline] (237.488 ms) : 0, 237488
GlobalTracer [candidate] (237.544 ms) : 0, 237544
AppSec [baseline] (176.539 ms) : 0, 176539
AppSec [candidate] (177.184 ms) : 0, 177184
IAST [baseline] (21.679 ms) : 0, 21679
IAST [candidate] (19.426 ms) : 0, 19426
Remote Config [baseline] (656.833 µs) : 0, 657
Remote Config [candidate] (658.477 µs) : 0, 658
Telemetry [baseline] (8.693 ms) : 0, 8693
Telemetry [candidate] (8.622 ms) : 0, 8622
section iast
BytebuddyAgent [baseline] (833.113 ms) : 0, 833113
BytebuddyAgent [candidate] (833.909 ms) : 0, 833909
GlobalTracer [baseline] (230.453 ms) : 0, 230453
GlobalTracer [candidate] (230.861 ms) : 0, 230861
AppSec [baseline] (53.786 ms) : 0, 53786
AppSec [candidate] (58.432 ms) : 0, 58432
IAST [baseline] (25.558 ms) : 0, 25558
IAST [candidate] (21.474 ms) : 0, 21474
Remote Config [baseline] (622.094 µs) : 0, 622
Remote Config [candidate] (671.274 µs) : 0, 671
Telemetry [baseline] (8.745 ms) : 0, 8745
Telemetry [candidate] (8.805 ms) : 0, 8805
section profiling
BytebuddyAgent [baseline] (710.562 ms) : 0, 710562
BytebuddyAgent [candidate] (705.828 ms) : 0, 705828
GlobalTracer [baseline] (352.454 ms) : 0, 352454
GlobalTracer [candidate] (351.346 ms) : 0, 351346
AppSec [baseline] (54.952 ms) : 0, 54952
AppSec [candidate] (54.409 ms) : 0, 54409
Remote Config [baseline] (699.155 µs) : 0, 699
Remote Config [candidate] (715.283 µs) : 0, 715
Telemetry [baseline] (8.97 ms) : 0, 8970
Telemetry [candidate] (8.95 ms) : 0, 8950
ProfilingAgent [baseline] (95.478 ms) : 0, 95478
ProfilingAgent [candidate] (95.216 ms) : 0, 95216
Profiling [baseline] (95.503 ms) : 0, 95503
Profiling [candidate] (95.241 ms) : 0, 95241
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.46.0-SNAPSHOT~10105acd79, baseline=1.46.0-SNAPSHOT~95f2490e06

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.04 s) : 0, 1040229
Total [baseline] (8.634 s) : 0, 8634285
Agent [candidate] (1.038 s) : 0, 1038435
Total [candidate] (8.632 s) : 0, 8632027
section iast
Agent [baseline] (1.173 s) : 0, 1173200
Total [baseline] (9.25 s) : 0, 9249663
Agent [candidate] (1.169 s) : 0, 1168850
Total [candidate] (9.209 s) : 0, 9209281
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.168 s) : 0, 1167957
Total [baseline] (9.176 s) : 0, 9176133
Agent [candidate] (1.177 s) : 0, 1177131
Total [candidate] (9.218 s) : 0, 9217619
section iast_TELEMETRY_OFF
Agent [baseline] (1.179 s) : 0, 1179220
Total [baseline] (9.285 s) : 0, 9284870
Agent [candidate] (1.166 s) : 0, 1165593
Total [candidate] (9.212 s) : 0, 9211728
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.04 s -
Agent iast 1.173 s 132.971 ms (12.8%)
Agent iast_HARDCODED_SECRET_DISABLED 1.168 s 127.728 ms (12.3%)
Agent iast_TELEMETRY_OFF 1.179 s 138.991 ms (13.4%)
Total tracing 8.634 s -
Total iast 9.25 s 615.379 ms (7.1%)
Total iast_HARDCODED_SECRET_DISABLED 9.176 s 541.848 ms (6.3%)
Total iast_TELEMETRY_OFF 9.285 s 650.585 ms (7.5%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.038 s -
Agent iast 1.169 s 130.415 ms (12.6%)
Agent iast_HARDCODED_SECRET_DISABLED 1.177 s 138.695 ms (13.4%)
Agent iast_TELEMETRY_OFF 1.166 s 127.158 ms (12.2%)
Total tracing 8.632 s -
Total iast 9.209 s 577.254 ms (6.7%)
Total iast_HARDCODED_SECRET_DISABLED 9.218 s 585.592 ms (6.8%)
Total iast_TELEMETRY_OFF 9.212 s 579.701 ms (6.7%)
gantt
    title insecure-bank - break down per module: candidate=1.46.0-SNAPSHOT~10105acd79, baseline=1.46.0-SNAPSHOT~95f2490e06

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (715.306 ms) : 0, 715306
BytebuddyAgent [candidate] (714.787 ms) : 0, 714787
GlobalTracer [baseline] (240.211 ms) : 0, 240211
GlobalTracer [candidate] (240.341 ms) : 0, 240341
AppSec [baseline] (55.585 ms) : 0, 55585
AppSec [candidate] (55.109 ms) : 0, 55109
Remote Config [baseline] (720.226 µs) : 0, 720
Remote Config [candidate] (711.74 µs) : 0, 712
Telemetry [baseline] (13.175 ms) : 0, 13175
Telemetry [candidate] (12.188 ms) : 0, 12188
section iast
BytebuddyAgent [baseline] (837.801 ms) : 0, 837801
BytebuddyAgent [candidate] (833.67 ms) : 0, 833670
GlobalTracer [baseline] (231.109 ms) : 0, 231109
GlobalTracer [candidate] (230.878 ms) : 0, 230878
AppSec [baseline] (55.527 ms) : 0, 55527
AppSec [candidate] (58.347 ms) : 0, 58347
IAST [baseline] (24.08 ms) : 0, 24080
IAST [candidate] (21.258 ms) : 0, 21258
Remote Config [baseline] (625.637 µs) : 0, 626
Remote Config [candidate] (656.733 µs) : 0, 657
Telemetry [baseline] (8.685 ms) : 0, 8685
Telemetry [candidate] (8.74 ms) : 0, 8740
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (833.854 ms) : 0, 833854
BytebuddyAgent [candidate] (840.025 ms) : 0, 840025
GlobalTracer [baseline] (230.577 ms) : 0, 230577
GlobalTracer [candidate] (232.252 ms) : 0, 232252
AppSec [baseline] (53.378 ms) : 0, 53378
AppSec [candidate] (57.767 ms) : 0, 57767
IAST [baseline] (25.636 ms) : 0, 25636
IAST [candidate] (22.284 ms) : 0, 22284
Remote Config [baseline] (613.815 µs) : 0, 614
Remote Config [candidate] (647.163 µs) : 0, 647
Telemetry [baseline] (8.613 ms) : 0, 8613
Telemetry [candidate] (8.736 ms) : 0, 8736
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (841.883 ms) : 0, 841883
BytebuddyAgent [candidate] (831.192 ms) : 0, 831192
GlobalTracer [baseline] (232.478 ms) : 0, 232478
GlobalTracer [candidate] (230.637 ms) : 0, 230637
AppSec [baseline] (55.197 ms) : 0, 55197
AppSec [candidate] (58.194 ms) : 0, 58194
IAST [baseline] (24.794 ms) : 0, 24794
IAST [candidate] (20.952 ms) : 0, 20952
Remote Config [baseline] (625.291 µs) : 0, 625
Remote Config [candidate] (669.089 µs) : 0, 669
Telemetry [baseline] (8.857 ms) : 0, 8857
Telemetry [candidate] (8.695 ms) : 0, 8695
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2025-01-28T14:34:23 2025-01-28T14:41:28
git_branch master andrea.marziali/scheduling-fix
git_commit_date 1738071038 1738074070
git_commit_sha 95f2490 10105ac
release_version 1.46.0-SNAPSHOT~95f2490e06 1.46.0-SNAPSHOT~10105acd79
start_time 2025-01-28T14:34:09 2025-01-28T14:41:14
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1738075646 1738075646
ci_job_id 783520359 783520359
ci_pipeline_id 54191976 54191976
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-s6tnoqam-project-304-concurrent-1-znxfnqjm 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux Linux runner-s6tnoqam-project-304-concurrent-1-znxfnqjm 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
variant iast iast

Summary

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

Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.46.0-SNAPSHOT~10105acd79, baseline=1.46.0-SNAPSHOT~95f2490e06
    dateFormat X
    axisFormat %s
section baseline
no_agent (384.138 µs) : 363, 405
.   : milestone, 384,
iast (513.166 µs) : 490, 537
.   : milestone, 513,
iast_FULL (751.541 µs) : 728, 775
.   : milestone, 752,
iast_GLOBAL (555.388 µs) : 532, 579
.   : milestone, 555,
iast_HARDCODED_SECRET_DISABLED (513.485 µs) : 491, 536
.   : milestone, 513,
iast_INACTIVE (464.269 µs) : 443, 486
.   : milestone, 464,
iast_TELEMETRY_OFF (504.502 µs) : 480, 529
.   : milestone, 505,
tracing (456.414 µs) : 433, 480
.   : milestone, 456,
section candidate
no_agent (377.464 µs) : 358, 397
.   : milestone, 377,
iast (509.556 µs) : 488, 531
.   : milestone, 510,
iast_FULL (739.695 µs) : 718, 762
.   : milestone, 740,
iast_GLOBAL (565.666 µs) : 543, 588
.   : milestone, 566,
iast_HARDCODED_SECRET_DISABLED (504.485 µs) : 482, 527
.   : milestone, 504,
iast_INACTIVE (460.617 µs) : 440, 482
.   : milestone, 461,
iast_TELEMETRY_OFF (497.972 µs) : 476, 520
.   : milestone, 498,
tracing (454.308 µs) : 434, 475
.   : milestone, 454,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 384.138 µs [363.226 µs, 405.05 µs] -
iast 513.166 µs [489.802 µs, 536.529 µs] 129.027 µs (33.6%)
iast_FULL 751.541 µs [728.362 µs, 774.721 µs] 367.403 µs (95.6%)
iast_GLOBAL 555.388 µs [532.27 µs, 578.506 µs] 171.25 µs (44.6%)
iast_HARDCODED_SECRET_DISABLED 513.485 µs [490.505 µs, 536.464 µs] 129.346 µs (33.7%)
iast_INACTIVE 464.269 µs [443.016 µs, 485.523 µs] 80.131 µs (20.9%)
iast_TELEMETRY_OFF 504.502 µs [480.011 µs, 528.993 µs] 120.364 µs (31.3%)
tracing 456.414 µs [433.19 µs, 479.637 µs] 72.275 µs (18.8%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 377.464 µs [357.542 µs, 397.387 µs] -
iast 509.556 µs [488.053 µs, 531.06 µs] 132.092 µs (35.0%)
iast_FULL 739.695 µs [717.857 µs, 761.533 µs] 362.231 µs (96.0%)
iast_GLOBAL 565.666 µs [543.076 µs, 588.256 µs] 188.202 µs (49.9%)
iast_HARDCODED_SECRET_DISABLED 504.485 µs [481.629 µs, 527.34 µs] 127.02 µs (33.7%)
iast_INACTIVE 460.617 µs [439.553 µs, 481.68 µs] 83.152 µs (22.0%)
iast_TELEMETRY_OFF 497.972 µs [476.329 µs, 519.615 µs] 120.507 µs (31.9%)
tracing 454.308 µs [433.736 µs, 474.88 µs] 76.844 µs (20.4%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.46.0-SNAPSHOT~10105acd79, baseline=1.46.0-SNAPSHOT~95f2490e06
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.352 ms) : 1332, 1372
.   : milestone, 1352,
appsec (1.751 ms) : 1727, 1774
.   : milestone, 1751,
appsec_no_iast (1.763 ms) : 1740, 1787
.   : milestone, 1763,
iast (1.498 ms) : 1474, 1523
.   : milestone, 1498,
profiling (1.544 ms) : 1520, 1568
.   : milestone, 1544,
tracing (1.496 ms) : 1472, 1520
.   : milestone, 1496,
section candidate
no_agent (1.369 ms) : 1349, 1389
.   : milestone, 1369,
appsec (1.761 ms) : 1737, 1784
.   : milestone, 1761,
appsec_no_iast (1.764 ms) : 1740, 1789
.   : milestone, 1764,
iast (1.516 ms) : 1492, 1540
.   : milestone, 1516,
profiling (1.495 ms) : 1471, 1519
.   : milestone, 1495,
tracing (1.494 ms) : 1469, 1520
.   : milestone, 1494,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.352 ms [1.332 ms, 1.372 ms] -
appsec 1.751 ms [1.727 ms, 1.774 ms] 398.29 µs (29.5%)
appsec_no_iast 1.763 ms [1.74 ms, 1.787 ms] 411.097 µs (30.4%)
iast 1.498 ms [1.474 ms, 1.523 ms] 146.126 µs (10.8%)
profiling 1.544 ms [1.52 ms, 1.568 ms] 191.752 µs (14.2%)
tracing 1.496 ms [1.472 ms, 1.52 ms] 143.873 µs (10.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.369 ms [1.349 ms, 1.389 ms] -
appsec 1.761 ms [1.737 ms, 1.784 ms] 391.724 µs (28.6%)
appsec_no_iast 1.764 ms [1.74 ms, 1.789 ms] 395.234 µs (28.9%)
iast 1.516 ms [1.492 ms, 1.54 ms] 147.282 µs (10.8%)
profiling 1.495 ms [1.471 ms, 1.519 ms] 125.833 µs (9.2%)
tracing 1.494 ms [1.469 ms, 1.52 ms] 125.396 µs (9.2%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/scheduling-fix
git_commit_date 1738071038 1738074070
git_commit_sha 95f2490 10105ac
release_version 1.46.0-SNAPSHOT~95f2490e06 1.46.0-SNAPSHOT~10105acd79
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1738076182 1738076182
ci_job_id 783520360 783520360
ci_pipeline_id 54191976 54191976
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-s6tnoqam-project-304-concurrent-2-18icskvc 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux Linux runner-s6tnoqam-project-304-concurrent-2-18icskvc 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:50:46 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
variant appsec appsec

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.46.0-SNAPSHOT~10105acd79, baseline=1.46.0-SNAPSHOT~95f2490e06
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.278 s) : 15278000, 15278000
.   : milestone, 15278000,
appsec (15.119 s) : 15119000, 15119000
.   : milestone, 15119000,
iast (18.638 s) : 18638000, 18638000
.   : milestone, 18638000,
iast_GLOBAL (18.092 s) : 18092000, 18092000
.   : milestone, 18092000,
profiling (15.132 s) : 15132000, 15132000
.   : milestone, 15132000,
tracing (15.119 s) : 15119000, 15119000
.   : milestone, 15119000,
section candidate
no_agent (15.613 s) : 15613000, 15613000
.   : milestone, 15613000,
appsec (15.047 s) : 15047000, 15047000
.   : milestone, 15047000,
iast (19.063 s) : 19063000, 19063000
.   : milestone, 19063000,
iast_GLOBAL (17.822 s) : 17822000, 17822000
.   : milestone, 17822000,
profiling (15.02 s) : 15020000, 15020000
.   : milestone, 15020000,
tracing (14.824 s) : 14824000, 14824000
.   : milestone, 14824000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.278 s [15.278 s, 15.278 s] -
appsec 15.119 s [15.119 s, 15.119 s] -159.0 ms (-1.0%)
iast 18.638 s [18.638 s, 18.638 s] 3.36 s (22.0%)
iast_GLOBAL 18.092 s [18.092 s, 18.092 s] 2.814 s (18.4%)
profiling 15.132 s [15.132 s, 15.132 s] -146.0 ms (-1.0%)
tracing 15.119 s [15.119 s, 15.119 s] -159.0 ms (-1.0%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.613 s [15.613 s, 15.613 s] -
appsec 15.047 s [15.047 s, 15.047 s] -566.0 ms (-3.6%)
iast 19.063 s [19.063 s, 19.063 s] 3.45 s (22.1%)
iast_GLOBAL 17.822 s [17.822 s, 17.822 s] 2.209 s (14.1%)
profiling 15.02 s [15.02 s, 15.02 s] -593.0 ms (-3.8%)
tracing 14.824 s [14.824 s, 14.824 s] -789.0 ms (-5.1%)
Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.46.0-SNAPSHOT~10105acd79, baseline=1.46.0-SNAPSHOT~95f2490e06
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.474 ms) : 1463, 1485
.   : milestone, 1474,
appsec (2.364 ms) : 2321, 2408
.   : milestone, 2364,
iast (2.118 ms) : 2063, 2173
.   : milestone, 2118,
iast_GLOBAL (2.163 ms) : 2108, 2218
.   : milestone, 2163,
profiling (1.986 ms) : 1943, 2030
.   : milestone, 1986,
tracing (1.958 ms) : 1915, 2000
.   : milestone, 1958,
section candidate
no_agent (1.474 ms) : 1462, 1486
.   : milestone, 1474,
appsec (2.365 ms) : 2322, 2408
.   : milestone, 2365,
iast (2.121 ms) : 2067, 2176
.   : milestone, 2121,
iast_GLOBAL (2.153 ms) : 2098, 2207
.   : milestone, 2153,
profiling (1.976 ms) : 1932, 2020
.   : milestone, 1976,
tracing (1.948 ms) : 1906, 1990
.   : milestone, 1948,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.474 ms [1.463 ms, 1.485 ms] -
appsec 2.364 ms [2.321 ms, 2.408 ms] 890.448 µs (60.4%)
iast 2.118 ms [2.063 ms, 2.173 ms] 643.725 µs (43.7%)
iast_GLOBAL 2.163 ms [2.108 ms, 2.218 ms] 689.082 µs (46.7%)
profiling 1.986 ms [1.943 ms, 2.03 ms] 512.206 µs (34.7%)
tracing 1.958 ms [1.915 ms, 2.0 ms] 483.658 µs (32.8%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.474 ms [1.462 ms, 1.486 ms] -
appsec 2.365 ms [2.322 ms, 2.408 ms] 891.184 µs (60.5%)
iast 2.121 ms [2.067 ms, 2.176 ms] 647.325 µs (43.9%)
iast_GLOBAL 2.153 ms [2.098 ms, 2.207 ms] 678.52 µs (46.0%)
profiling 1.976 ms [1.932 ms, 2.02 ms] 501.895 µs (34.0%)
tracing 1.948 ms [1.906 ms, 1.99 ms] 474.292 µs (32.2%)

Copy link
Contributor

@mcculls mcculls left a comment

Choose a reason for hiding this comment

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

+1 ... just a small question about the class-loader used for the method handle

I especially appreciate all the extensive tests!

@amarziali amarziali enabled auto-merge (squash) January 28, 2025 10:37
@amarziali amarziali added comp: api Tracer public API and removed comp: api Tracer public API labels Jan 28, 2025
@amarziali amarziali merged commit a4979bc into master Jan 28, 2025
196 of 198 checks passed
@amarziali amarziali deleted the andrea.marziali/scheduling-fix branch January 28, 2025 15:20
@github-actions github-actions bot added this to the 1.46.0 milestone Jan 28, 2025
svc-squareup-copybara pushed a commit to cashapp/misk that referenced this pull request Jan 31, 2025
| Package | Type | Package file | Manager | Update | Change |
|---|---|---|---|---|---|
|
[com.google.cloud:google-cloud-datastore](https://github.com/googleapis/java-datastore)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.25.4` -> `2.26.0` |
| [com.datadoghq:dd-trace-api](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.45.2` -> `1.46.0` |
| [com.datadoghq:dd-trace-ot](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.45.2` -> `1.46.0` |
| [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.9` -> `2.30.10` |
|
[software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava)
| dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.9` -> `2.30.10` |
| [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.9` -> `2.30.10` |
| [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.9` -> `2.30.10` |
| [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.9` -> `2.30.10` |
| [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.30.9` -> `2.30.10` |

---

### Release Notes

<details>
<summary>googleapis/java-datastore
(com.google.cloud:google-cloud-datastore)</summary>

###
[`v2.26.0`](https://github.com/googleapis/java-datastore/blob/HEAD/CHANGELOG.md#2260-2025-01-29)

##### Features

- Add firestoreInDatastoreMode for datastore emulator
([#&#8203;1698](googleapis/java-datastore#1698))
([50f106d](googleapis/java-datastore@50f106d))

##### Dependencies

- Update dependency com.google.cloud:sdk-platform-java-config to v3.42.0
([#&#8203;1725](googleapis/java-datastore#1725))
([1cbaf22](googleapis/java-datastore@1cbaf22))

</details>

<details>
<summary>datadog/dd-trace-java (com.datadoghq:dd-trace-api)</summary>

###
[`v1.46.0`](https://github.com/DataDog/dd-trace-java/releases/tag/v1.46.0):
1.46.0

##### Breaking Changes

> \[!WARNING]
> jnr-unixsocket is now an external dependency of dd-trace-ot and must
be included when deploying dd-trace-ot.

> \[!NOTE]
> The API `TracerScope.setAsync(boolean)`, used to manually control
asynchronous span propagation, does no more apply to the scope instance
but to the active span scope.

##### Components

##### Application Security Management (IAST)

- 🐛 Fix String.replace instrumentation for IAST
([#&#8203;8281](DataDog/dd-trace-java#8281) -
[@&#8203;Mariovido](https://github.com/Mariovido))
- ✨ Apply the standard nomenclature to the stacktrace configs
([#&#8203;8244](DataDog/dd-trace-java#8244) -
[@&#8203;jandro996](https://github.com/jandro996))
- 🐛 Exclude false positive weak randomness
([#&#8203;8232](DataDog/dd-trace-java#8232) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Propagation of translateEscapes of String class
([#&#8203;8186](DataDog/dd-trace-java#8186) -
[@&#8203;sezen-datadog](https://github.com/sezen-datadog))
- ✨ Add security control metrics
([#&#8203;8175](DataDog/dd-trace-java#8175) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Increase IAST propagation to StringBuffer setLength
([#&#8203;8128](DataDog/dd-trace-java#8128) -
[@&#8203;Mariovido](https://github.com/Mariovido))
- ✨ Add IAST taint tracking for DB values
([#&#8203;8072](DataDog/dd-trace-java#8072) -
[@&#8203;Mariovido](https://github.com/Mariovido))

##### Application Security Management (WAF)

- 🐛 Prevents a NPE when there is no subscriber for user events
([#&#8203;8258](DataDog/dd-trace-java#8258) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ Apply the standard nomenclature to the stacktrace configs
([#&#8203;8244](DataDog/dd-trace-java#8244) -
[@&#8203;jandro996](https://github.com/jandro996))
- 🐛 Ensure cached subscriptions are cleared on reconfiguration via
RC ([#&#8203;8229](DataDog/dd-trace-java#8229)
-
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ Add support for session tracking in Vertx
([#&#8203;8167](DataDog/dd-trace-java#8167) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ Create span tag: \_dd.appsec.rasp.timeout
([#&#8203;8269](DataDog/dd-trace-java#8269) -
[@&#8203;Mariovido](https://github.com/Mariovido))

##### Build & Tooling

- 🐛 Ensure shaded helpers have unique names when injected into
class-loaders
([#&#8203;8192](DataDog/dd-trace-java#8192) -
[@&#8203;mcculls](https://github.com/mcculls))

##### Configuration at Runtime

- 🐛 Remove filtering of `DD_SERVICE` and `DD_ENV` from the tracer
([#&#8203;8176](DataDog/dd-trace-java#8176) -
[@&#8203;mhlidd](https://github.com/mhlidd))

##### Continuous Integration Visibility

- 🧹 Generalize TestRetryPolicy to TestExecutionPolicy
([#&#8203;8302](DataDog/dd-trace-java#8302) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🧹 Parallelize CI Visibility settings requests
([#&#8203;8299](DataDog/dd-trace-java#8299) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🧹 Generalize test retry logic
([#&#8203;8289](DataDog/dd-trace-java#8289) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🧹 Generalize tests skipping logic
([#&#8203;8288](DataDog/dd-trace-java#8288) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🧹 Remove skip and shouldBeSkipped methods from TestEventsHandler
in favor of isSkippable
([#&#8203;8286](DataDog/dd-trace-java#8286) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨⚡ Optimize Git repository information computation
([#&#8203;8270](DataDog/dd-trace-java#8270) -
[@&#8203;dougqh](https://github.com/dougqh))
- ✨ Always request known tests from the backend
([#&#8203;8268](DataDog/dd-trace-java#8268) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Fix NPE when trying to get retry analyzer in Test NG
([#&#8203;8253](DataDog/dd-trace-java#8253) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🐛 Set test framework and test framework version tags atomically
([#&#8203;8252](DataDog/dd-trace-java#8252) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Add debug logging to Android Gradle module layout logic
([#&#8203;8251](DataDog/dd-trace-java#8251) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🐛 Fix source and destination folders computation for Android
Gradle projects
([#&#8203;8190](DataDog/dd-trace-java#8190) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Add basic Scala Weaver sbt support
([#&#8203;8189](DataDog/dd-trace-java#8189) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Implement impacted tests detection
([#&#8203;8188](DataDog/dd-trace-java#8188) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))

##### Data Streams Monitoring

- ✨ Change hash computation for protobuf to better represent
impacting changes + save proto number in schema
([#&#8203;8201](DataDog/dd-trace-java#8201) -
[@&#8203;vandonr](https://github.com/vandonr))

##### Database Monitoring

- Add peer service tag in dbm sql commenter
([#&#8203;7913](DataDog/dd-trace-java#7913) -
[@&#8203;jordan-wong](https://github.com/jordan-wong))

##### Dynamic Instrumentation

- ✨ Add support for SymDB to scan directories
([#&#8203;8306](DataDog/dd-trace-java#8306) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Add SymDB report for any jar scanning failures
([#&#8203;8300](DataDog/dd-trace-java#8300) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Use two budgets depending on type
([#&#8203;8283](DataDog/dd-trace-java#8283) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- ✨ Institute a 10 snapshot per probe per trace budget
([#&#8203;8277](DataDog/dd-trace-java#8277) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- 🐛 Avoid double snapshots for Exception Replay
([#&#8203;8273](DataDog/dd-trace-java#8273) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Simplify code origins. Separate out snapshot generation.
([#&#8203;8263](DataDog/dd-trace-java#8263) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- ✨ Add Exception probe custom instrumentation
([#&#8203;8230](DataDog/dd-trace-java#8230) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Enhance log probes to honor debug session tags
([#&#8203;8215](DataDog/dd-trace-java#8215) -
[@&#8203;evanchooly](https://github.com/evanchooly))
- 🐛 Don't redact env tokens from debugger probe snapshots
([#&#8203;8211](DataDog/dd-trace-java#8211) -
[@&#8203;watson](https://github.com/watson))
- ✨⚡ Move Trace/SpanId capture at commit time
([#&#8203;8184](DataDog/dd-trace-java#8184) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- 🐛 Capture values at entry for method probe
([#&#8203;8169](DataDog/dd-trace-java#8169) -
[@&#8203;jpbempel](https://github.com/jpbempel))

##### JMX fetch

- 🐛 Mute JMXFetch Shutdown in progress error
([#&#8203;8068](DataDog/dd-trace-java#8068) -
[@&#8203;ygree](https://github.com/ygree))

##### OpenTracing

- ⚠️🧹 Make jnr-unixsocket an explicit dependency of
dd-trace-ot
([#&#8203;8307](DataDog/dd-trace-java#8307) -
[@&#8203;mcculls](https://github.com/mcculls))

##### Profiling

- 🐛 Avoid unsupported API call for creating folders on windows
([#&#8203;8304](DataDog/dd-trace-java#8304) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- ✨ Tag profiles for serverless
([#&#8203;8279](DataDog/dd-trace-java#8279) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- ✨ add queue type and length to queue events
([#&#8203;8242](DataDog/dd-trace-java#8242) -
[@&#8203;richardstartin](https://github.com/richardstartin))
- 🐛 TempLocationManager Fixes and Improvements
([#&#8203;8191](DataDog/dd-trace-java#8191) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- ✨ Bump ddprof to 1.18.0
([#&#8203;8173](DataDog/dd-trace-java#8173) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- ✨ Report profiler initialization and configuration errors to
telemetry
([#&#8203;8171](DataDog/dd-trace-java#8171) -
[@&#8203;jbachorik](https://github.com/jbachorik))

##### Telemetry

- ✨ Add pending traces report in tracer flares
([#&#8203;8053](DataDog/dd-trace-java#8053) -
[@&#8203;mhlidd](https://github.com/mhlidd))

##### Testing

- ✨ Test http server requests in parallel
([#&#8203;8222](DataDog/dd-trace-java#8222) -
[@&#8203;amarziali](https://github.com/amarziali))

##### Trace context propagation

- ✨ Add non default propagator registration
([#&#8203;8310](DataDog/dd-trace-java#8310) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))

##### Tracer core

- ✨ Probe for existence of IBMSASL or ACCP security providers
([#&#8203;8276](DataDog/dd-trace-java#8276) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨⚡ Overhead improvement to agent feedback based sampling
([#&#8203;8265](DataDog/dd-trace-java#8265) -
[@&#8203;dougqh](https://github.com/dougqh))
- 🧹 Move async propagation API from scope to tracer
([#&#8203;8231](DataDog/dd-trace-java#8231) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- ✨ Introduce context propagation API
([#&#8203;8161](DataDog/dd-trace-java#8161) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- ✨🧪 Use env-entry to add tags per webapp deployment
([#&#8203;8138](DataDog/dd-trace-java#8138) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Introduce context helpers API
([#&#8203;8134](DataDog/dd-trace-java#8134) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- ✨ Support IPv6 values for `DD_AGENT_HOST` and
`DD_TRACE_AGENT_URL`
([#&#8203;7984](DataDog/dd-trace-java#7984) -
[@&#8203;mhlidd](https://github.com/mhlidd))

##### Instrumentations

##### Apache HttpComponents

- 🐛 Properly finish spans and support latest apache httpclient5
([#&#8203;8272](DataDog/dd-trace-java#8272) -
[@&#8203;amarziali](https://github.com/amarziali))

##### AWS Lambda instrumentation

- 🐛 Properly capture lambda payloads for all handler types.
([#&#8203;8264](DataDog/dd-trace-java#8264) -
[@&#8203;purple4reina](https://github.com/purple4reina))

##### AWS S3 instrumentation

- 💡 Create S3 instrumentation + add span pointers
([#&#8203;8075](DataDog/dd-trace-java#8075) -
[@&#8203;nhulston](https://github.com/nhulston))

##### AWS SDK instrumentation

- 🐛 Revert "Add avoid double instrumenting lambda non-streaming
handlers."
([#&#8203;8247](DataDog/dd-trace-java#8247) -
[@&#8203;nhulston](https://github.com/nhulston))

##### Cassandra

- ✨ Allow extracting keyspace from statement result
([#&#8203;8239](DataDog/dd-trace-java#8239) -
[@&#8203;amarziali](https://github.com/amarziali))

##### Core Java language instrumentation

- ✨ Propagation of translateEscapes of String class
([#&#8203;8186](DataDog/dd-trace-java#8186) -
[@&#8203;sezen-datadog](https://github.com/sezen-datadog))

##### Eclipse Vert.x instrumentation

- 🐛 Fix vertx worker propagation and error handling
([#&#8203;8237](DataDog/dd-trace-java#8237) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Support vertx 5
([#&#8203;8220](DataDog/dd-trace-java#8220) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Add support for session tracking in Vertx
([#&#8203;8167](DataDog/dd-trace-java#8167) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))

##### Kafka instrumentation

- 🐛 Prevent possible NPE calculating Kafka record header size
([#&#8203;8292](DataDog/dd-trace-java#8292) -
[@&#8203;ygree](https://github.com/ygree))

##### Mule instrumentation

- 🐛 Fix crash using Mule with JPMS
([#&#8203;8187](DataDog/dd-trace-java#8187) -
[@&#8203;amarziali](https://github.com/amarziali))

##### Protocol Buffer instrumentation

- ✨ Change hash computation for protobuf to better represent
impacting changes + save proto number in schema
([#&#8203;8201](DataDog/dd-trace-java#8201) -
[@&#8203;vandonr](https://github.com/vandonr))

##### Spring instrumentation

- 🐛 Preserve getQualifier from spring scheduling runnables
([#&#8203;8293](DataDog/dd-trace-java#8293) -
[@&#8203;amarziali](https://github.com/amarziali))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 6pm every weekday,before 2am
every weekday" in timezone Australia/Melbourne, Automerge - At any time
(no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://github.com/renovatebot/renovate).

GitOrigin-RevId: bb09d47e4eed77a003f630273b4d0a84003eb899
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
inst: spring Spring instrumentation type: bug
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants