Skip to content

Make webflux compatible with latest spring 6#6352

Merged
amarziali merged 5 commits into
masterfrom
andrea.marziali/webflux-handler-activate
Dec 13, 2023
Merged

Make webflux compatible with latest spring 6#6352
amarziali merged 5 commits into
masterfrom
andrea.marziali/webflux-handler-activate

Conversation

@amarziali
Copy link
Copy Markdown
Contributor

@amarziali amarziali commented Dec 12, 2023

What Does This Do

Originally created to correctly propagate the span scope to the handlers (since the mono wasn't wrapped hence whatever span created starting from a reactive handler was wrongly attached to the local root).

It also fixes:

  • the dispatcher advices that were muzzling around latest spring webflux 6 versions because Request.getMethodValue has been deprecated and removed. Consequences are mostly bad resource name on the handler and missing http route.
  • LatestDep webflux spring 6 tests there were no more compatible with that runtime.
  • Muzzle was not running on webflux 6. Advices have been migrated from webflux-5 to webflux-6 module since the only linkage issues concerned the resolution of webclient http status code, done with method handles (was already the case for rawStatusCode)

Motivation

Additional Notes

This PR enables also the latestDep tests to run against a JDK 17 for obvious reasons. Also, the webflux-6 can be deleted if the test suites are moved on the webflux-5 module. But this can be done in a separate PR since there is no urgency.

Jira ticket: APMS-10847

@amarziali amarziali added type: bug Bug report and fix inst: spring Spring instrumentation run-tests: all Run all tests labels Dec 12, 2023
@amarziali amarziali requested a review from a team as a code owner December 12, 2023 14:02
@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Dec 12, 2023

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/webflux-handler-activate
git_commit_date 1702469793 1702476388
git_commit_sha b0cf14d a0f565abb0
release_version 1.26.0-SNAPSHOT~b0cf14ddda 1.26.0-SNAPSHOT~a0f565abb0
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1702479194 1702479194
ci_job_id 388959115 388959115
ci_pipeline_id 25026334 25026334
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
module Agent Agent
parent None None
variant iast iast

Summary

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

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.26.0-SNAPSHOT~a0f565abb0, baseline=1.26.0-SNAPSHOT~b0cf14ddda

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.044 s) : 0, 1043896
Total [baseline] (8.723 s) : 0, 8722977
Agent [candidate] (1.047 s) : 0, 1047406
Total [candidate] (8.741 s) : 0, 8740833
section iast
Agent [baseline] (1.184 s) : 0, 1184385
Total [baseline] (9.292 s) : 0, 9292411
Agent [candidate] (1.163 s) : 0, 1163329
Total [candidate] (9.28 s) : 0, 9279849
section iast_TELEMETRY_OFF
Agent [baseline] (1.161 s) : 0, 1161257
Total [baseline] (9.282 s) : 0, 9281944
Agent [candidate] (1.155 s) : 0, 1155042
Total [candidate] (9.214 s) : 0, 9213568
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.044 s -
Agent iast 1.184 s 140.488 ms (13.5%)
Agent iast_TELEMETRY_OFF 1.161 s 117.361 ms (11.2%)
Total tracing 8.723 s -
Total iast 9.292 s 569.433 ms (6.5%)
Total iast_TELEMETRY_OFF 9.282 s 558.967 ms (6.4%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.047 s -
Agent iast 1.163 s 115.923 ms (11.1%)
Agent iast_TELEMETRY_OFF 1.155 s 107.635 ms (10.3%)
Total tracing 8.741 s -
Total iast 9.28 s 539.016 ms (6.2%)
Total iast_TELEMETRY_OFF 9.214 s 472.735 ms (5.4%)
gantt
    title insecure-bank - break down per module: candidate=1.26.0-SNAPSHOT~a0f565abb0, baseline=1.26.0-SNAPSHOT~b0cf14ddda

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (645.65 ms) : 0, 645650
BytebuddyAgent [candidate] (647.359 ms) : 0, 647359
GlobalTracer [baseline] (307.179 ms) : 0, 307179
GlobalTracer [candidate] (308.934 ms) : 0, 308934
AppSec [baseline] (48.96 ms) : 0, 48960
AppSec [candidate] (49.025 ms) : 0, 49025
Remote Config [baseline] (666.582 µs) : 0, 667
Remote Config [candidate] (674.221 µs) : 0, 674
Telemetry [baseline] (7.102 ms) : 0, 7102
Telemetry [candidate] (7.143 ms) : 0, 7143
section iast
BytebuddyAgent [baseline] (782.762 ms) : 0, 782762
BytebuddyAgent [candidate] (768.412 ms) : 0, 768412
GlobalTracer [baseline] (290.772 ms) : 0, 290772
GlobalTracer [candidate] (285.986 ms) : 0, 285986
AppSec [baseline] (47.786 ms) : 0, 47786
AppSec [candidate] (47.369 ms) : 0, 47369
IAST [baseline] (20.948 ms) : 0, 20948
IAST [candidate] (20.079 ms) : 0, 20079
Remote Config [baseline] (603.264 µs) : 0, 603
Remote Config [candidate] (599.988 µs) : 0, 600
Telemetry [baseline] (6.545 ms) : 0, 6545
Telemetry [candidate] (6.589 ms) : 0, 6589
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (764.073 ms) : 0, 764073
BytebuddyAgent [candidate] (760.072 ms) : 0, 760072
GlobalTracer [baseline] (287.487 ms) : 0, 287487
GlobalTracer [candidate] (286.839 ms) : 0, 286839
AppSec [baseline] (46.529 ms) : 0, 46529
AppSec [candidate] (49.18 ms) : 0, 49180
IAST [baseline] (17.915 ms) : 0, 17915
IAST [candidate] (16.846 ms) : 0, 16846
Remote Config [baseline] (609.622 µs) : 0, 610
Remote Config [candidate] (578.451 µs) : 0, 578
Telemetry [baseline] (10.23 ms) : 0, 10230
Telemetry [candidate] (7.206 ms) : 0, 7206
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.26.0-SNAPSHOT~a0f565abb0, baseline=1.26.0-SNAPSHOT~b0cf14ddda

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.044 s) : 0, 1044469
Total [baseline] (9.369 s) : 0, 9369381
Agent [candidate] (1.043 s) : 0, 1042717
Total [candidate] (9.328 s) : 0, 9327512
section appsec
Agent [baseline] (1.132 s) : 0, 1132309
Total [baseline] (9.506 s) : 0, 9505562
Agent [candidate] (1.134 s) : 0, 1133608
Total [candidate] (9.438 s) : 0, 9437729
section iast
Agent [baseline] (1.16 s) : 0, 1159890
Total [baseline] (9.61 s) : 0, 9609596
Agent [candidate] (1.162 s) : 0, 1161581
Total [candidate] (9.564 s) : 0, 9563601
section profiling
Agent [baseline] (1.23 s) : 0, 1230255
Total [baseline] (9.615 s) : 0, 9615262
Agent [candidate] (1.235 s) : 0, 1234824
Total [candidate] (9.628 s) : 0, 9627555
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.044 s -
Agent appsec 1.132 s 87.84 ms (8.4%)
Agent iast 1.16 s 115.421 ms (11.1%)
Agent profiling 1.23 s 185.786 ms (17.8%)
Total tracing 9.369 s -
Total appsec 9.506 s 136.181 ms (1.5%)
Total iast 9.61 s 240.215 ms (2.6%)
Total profiling 9.615 s 245.881 ms (2.6%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.043 s -
Agent appsec 1.134 s 90.891 ms (8.7%)
Agent iast 1.162 s 118.865 ms (11.4%)
Agent profiling 1.235 s 192.107 ms (18.4%)
Total tracing 9.328 s -
Total appsec 9.438 s 110.217 ms (1.2%)
Total iast 9.564 s 236.09 ms (2.5%)
Total profiling 9.628 s 300.043 ms (3.2%)
gantt
    title petclinic - break down per module: candidate=1.26.0-SNAPSHOT~a0f565abb0, baseline=1.26.0-SNAPSHOT~b0cf14ddda

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (646.332 ms) : 0, 646332
BytebuddyAgent [candidate] (645.522 ms) : 0, 645522
GlobalTracer [baseline] (307.131 ms) : 0, 307131
GlobalTracer [candidate] (306.921 ms) : 0, 306921
AppSec [baseline] (48.834 ms) : 0, 48834
AppSec [candidate] (48.531 ms) : 0, 48531
Remote Config [baseline] (669.329 µs) : 0, 669
Remote Config [candidate] (665.219 µs) : 0, 665
Telemetry [baseline] (7.166 ms) : 0, 7166
Telemetry [candidate] (7.045 ms) : 0, 7045
section appsec
BytebuddyAgent [baseline] (645.926 ms) : 0, 645926
BytebuddyAgent [candidate] (645.542 ms) : 0, 645542
GlobalTracer [baseline] (307.494 ms) : 0, 307494
GlobalTracer [candidate] (308.541 ms) : 0, 308541
AppSec [baseline] (137.223 ms) : 0, 137223
AppSec [candidate] (137.305 ms) : 0, 137305
Remote Config [baseline] (645.242 µs) : 0, 645
Remote Config [candidate] (647.091 µs) : 0, 647
Telemetry [baseline] (6.878 ms) : 0, 6878
Telemetry [candidate] (7.501 ms) : 0, 7501
section iast
BytebuddyAgent [baseline] (765.597 ms) : 0, 765597
BytebuddyAgent [candidate] (766.093 ms) : 0, 766093
GlobalTracer [baseline] (284.919 ms) : 0, 284919
GlobalTracer [candidate] (286.096 ms) : 0, 286096
AppSec [baseline] (46.991 ms) : 0, 46991
AppSec [candidate] (47.072 ms) : 0, 47072
IAST [baseline] (20.941 ms) : 0, 20941
IAST [candidate] (20.927 ms) : 0, 20927
Remote Config [baseline] (611.98 µs) : 0, 612
Remote Config [candidate] (604.478 µs) : 0, 604
Telemetry [baseline] (6.616 ms) : 0, 6616
Telemetry [candidate] (6.56 ms) : 0, 6560
section profiling
BytebuddyAgent [baseline] (654.956 ms) : 0, 654956
BytebuddyAgent [candidate] (658.04 ms) : 0, 658040
GlobalTracer [baseline] (376.342 ms) : 0, 376342
GlobalTracer [candidate] (378.05 ms) : 0, 378050
AppSec [baseline] (48.799 ms) : 0, 48799
AppSec [candidate] (48.46 ms) : 0, 48460
Remote Config [baseline] (682.64 µs) : 0, 683
Remote Config [candidate] (653.895 µs) : 0, 654
Telemetry [baseline] (7.456 ms) : 0, 7456
Telemetry [candidate] (7.407 ms) : 0, 7407
ProfilingAgent [baseline] (88.107 ms) : 0, 88107
ProfilingAgent [candidate] (88.086 ms) : 0, 88086
Profiling [baseline] (88.133 ms) : 0, 88133
Profiling [candidate] (88.111 ms) : 0, 88111
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2023-12-13T14:32:27 2023-12-13T14:49:01
git_branch master andrea.marziali/webflux-handler-activate
git_commit_date 1702469793 1702476388
git_commit_sha b0cf14d a0f565abb0
release_version 1.26.0-SNAPSHOT~b0cf14ddda 1.26.0-SNAPSHOT~a0f565abb0
start_time 2023-12-13T14:32:14 2023-12-13T14:48:48
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1702479194 1702479194
ci_job_id 388959115 388959115
ci_pipeline_id 25026334 25026334
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
variant iast iast

Summary

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

Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.26.0-SNAPSHOT~a0f565abb0, baseline=1.26.0-SNAPSHOT~b0cf14ddda
    dateFormat X
    axisFormat %s
section baseline
no_agent (369.328 µs) : 349, 389
.   : milestone, 369,
iast (480.705 µs) : 460, 502
.   : milestone, 481,
iast_FULL (535.144 µs) : 515, 555
.   : milestone, 535,
iast_INACTIVE (453.082 µs) : 432, 474
.   : milestone, 453,
iast_TELEMETRY_OFF (474.643 µs) : 453, 496
.   : milestone, 475,
tracing (454.056 µs) : 433, 475
.   : milestone, 454,
section candidate
no_agent (363.977 µs) : 344, 384
.   : milestone, 364,
iast (476.698 µs) : 456, 497
.   : milestone, 477,
iast_FULL (543.409 µs) : 523, 564
.   : milestone, 543,
iast_INACTIVE (450.6 µs) : 429, 472
.   : milestone, 451,
iast_TELEMETRY_OFF (472.821 µs) : 452, 493
.   : milestone, 473,
tracing (444.962 µs) : 425, 465
.   : milestone, 445,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 369.328 µs [349.39 µs, 389.266 µs] -
iast 480.705 µs [459.773 µs, 501.637 µs] 111.378 µs (30.2%)
iast_FULL 535.144 µs [514.871 µs, 555.418 µs] 165.817 µs (44.9%)
iast_INACTIVE 453.082 µs [431.728 µs, 474.436 µs] 83.755 µs (22.7%)
iast_TELEMETRY_OFF 474.643 µs [453.413 µs, 495.873 µs] 105.315 µs (28.5%)
tracing 454.056 µs [433.432 µs, 474.681 µs] 84.729 µs (22.9%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 363.977 µs [344.002 µs, 383.951 µs] -
iast 476.698 µs [456.416 µs, 496.979 µs] 112.721 µs (31.0%)
iast_FULL 543.409 µs [522.875 µs, 563.942 µs] 179.432 µs (49.3%)
iast_INACTIVE 450.6 µs [429.027 µs, 472.172 µs] 86.623 µs (23.8%)
iast_TELEMETRY_OFF 472.821 µs [452.194 µs, 493.448 µs] 108.845 µs (29.9%)
tracing 444.962 µs [424.558 µs, 465.367 µs] 80.986 µs (22.3%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.26.0-SNAPSHOT~a0f565abb0, baseline=1.26.0-SNAPSHOT~b0cf14ddda
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.367 ms) : 1347, 1386
.   : milestone, 1367,
appsec (1.781 ms) : 1757, 1806
.   : milestone, 1781,
iast (1.536 ms) : 1512, 1560
.   : milestone, 1536,
profiling (1.53 ms) : 1505, 1554
.   : milestone, 1530,
tracing (1.499 ms) : 1474, 1523
.   : milestone, 1499,
section candidate
no_agent (1.348 ms) : 1329, 1367
.   : milestone, 1348,
appsec (1.756 ms) : 1731, 1782
.   : milestone, 1756,
iast (1.508 ms) : 1484, 1533
.   : milestone, 1508,
profiling (1.552 ms) : 1525, 1579
.   : milestone, 1552,
tracing (1.521 ms) : 1497, 1545
.   : milestone, 1521,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.367 ms [1.347 ms, 1.386 ms] -
appsec 1.781 ms [1.757 ms, 1.806 ms] 414.821 µs (30.4%)
iast 1.536 ms [1.512 ms, 1.56 ms] 169.215 µs (12.4%)
profiling 1.53 ms [1.505 ms, 1.554 ms] 162.951 µs (11.9%)
tracing 1.499 ms [1.474 ms, 1.523 ms] 132.092 µs (9.7%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.348 ms [1.329 ms, 1.367 ms] -
appsec 1.756 ms [1.731 ms, 1.782 ms] 408.075 µs (30.3%)
iast 1.508 ms [1.484 ms, 1.533 ms] 159.954 µs (11.9%)
profiling 1.552 ms [1.525 ms, 1.579 ms] 203.417 µs (15.1%)
tracing 1.521 ms [1.497 ms, 1.545 ms] 172.888 µs (12.8%)

@amarziali amarziali force-pushed the andrea.marziali/webflux-handler-activate branch from c421010 to f1e180b Compare December 12, 2023 14:49
@amarziali amarziali removed the run-tests: all Run all tests label Dec 12, 2023
@amarziali amarziali force-pushed the andrea.marziali/webflux-handler-activate branch 3 times, most recently from 383dcd6 to 2b72307 Compare December 13, 2023 09:10
Comment thread dd-java-agent/instrumentation/spring-webflux-6/build.gradle Outdated
@amarziali amarziali enabled auto-merge (squash) December 13, 2023 13:17
@amarziali amarziali force-pushed the andrea.marziali/webflux-handler-activate branch from ca07cf0 to 24c0397 Compare December 13, 2023 13:25
@amarziali amarziali force-pushed the andrea.marziali/webflux-handler-activate branch from 24c0397 to a0f565a Compare December 13, 2023 14:06
@amarziali amarziali force-pushed the andrea.marziali/webflux-handler-activate branch from a0f565a to 2b94889 Compare December 13, 2023 14:34
@amarziali amarziali merged commit 4908b2c into master Dec 13, 2023
@amarziali amarziali deleted the andrea.marziali/webflux-handler-activate branch December 13, 2023 15:06
@github-actions github-actions Bot added this to the 1.26.0 milestone Dec 13, 2023
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 Bug report and fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants