8000 Instrument Jetty websocket pojo by amarziali · Pull Request #8562 · DataDog/dd-trace-java · GitHub
[go: up one dir, main page]

Skip to content

Instrument Jetty websocket pojo #8562

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

Merged
merged 9 commits into from
Mar 24, 2025
Merged

Conversation

amarziali
Copy link
Contributor
@amarziali amarziali commented Mar 14, 2025

What Does This Do

This PR completes the JSR356 chapter by adding instrumentations for jetty pojo that were excluded.

In fact Jetty did not implement POJO websocket support like other servers (i.e. tomcat) by wrapping the POJO into a class extending Endpoint but uses a complex metadata parsing and deal with MethodHandle direct call.

That made difficult the instrumentation. Now this PR addresses that by swapping the method handle jetty uses for opening, closing , and onMessage. Using instrumentation intercepting the jsr annotations (like @OnOpen, @OnMessage) would not have worked since the spec states that parameter like Session are optional hence it's not guaranteed they are there and they are vital to lookup the context store.

Hopefully jetty seems to do a couple of thing that limits the risk of swapping method handles and ensure that the needed parameters are always there:

  1. it permutes the method handle arguments so we can rely on a certain deterministic order
  2. it binds every time the session

I tried to put particular care in securing the datadog code in a try-catch-throwable blocks and reporting errors to the instrumentation telemetry.
Also, I added extensive testing trying several combination of arguments annotated pojo might have

Motivation

Additional Notes

Supports from 10 included to 12.1 excluded. 12.1 introduced a refactoring that needs to be covered but it's still in alpha

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@amarziali amarziali added type: enhancement inst: websocket WebSocket Instrumentation labels Mar 14, 2025
@amarziali amarziali requested review from a team as code owners March 14, 2025 09:49
@amarziali amarziali force-pushed the andrea.marziali/jetty-websocket branch from 184045b to 617189f Compare March 14, 2025 09:50
@amarziali amarziali force-pushed the andrea.marziali/jetty-websocket branch 2 times, most recently from 88e09fb to 7d49987 Compare March 14, 2025 10:17
@pr-commenter
Copy link
pr-commenter bot commented Mar 14, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/jetty-websocket
git_commit_date 1742520091 1742547559
git_commit_sha fe9f968 03a01af
release_version 1.48.0-SNAPSHOT~fe9f968edb 1.48.0-SNAPSHOT~03a01afa7b
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1742550664 1742550664
ci_job_id 858396298 858396298
ci_pipeline_id 59556411 59556411
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-9n9spsyq-project-304-concurrent-0-1lzky1b3 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-9n9spsyq-project-304-concurrent-0-1lzky1b3 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None
variant iast iast

Summary

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

Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.48.0-SNAPSHOT~03a01afa7b, baseline=1.48.0-SNAPSHOT~fe9f968edb

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.042 s) : 0, 1042171
Total [baseline] (10.492 s) : 0, 10492314
Agent [candidate] (1.044 s) : 0, 1044070
Total [candidate] (10.473 s) : 0, 10473342
section appsec
Agent [baseline] (1.184 s) : 0, 1184453
Total [baseline] (10.759 s) : 0, 10758562
Agent [candidate] (1.186 s) : 0, 1185624
Total [candidate] (10.715 s) : 0, 10715116
section iast
Agent [baseline] (1.174 s) : 0, 1174434
Total [baseline] (11.001 s) : 0, 11000740
Agent [candidate] (1.175 s) : 0, 1174957
Total [candidate] (11.032 s) : 0, 11032173
section profiling
Agent [baseline] (1.265 s) : 0, 1264886
Total [baseline] (10.875 s) : 0, 10875110
Agent [candidate] (1.262 s) : 0, 1261993
Total [candidate] (10.801 s) : 0, 10801491
Loading
  • baseline results
8000
Module Variant Duration Δ tracing
Agent tracing 1.042 s -
Agent appsec 1.184 s 142.282 ms (13.7%)
Agent iast 1.174 s 132.263 ms (12.7%)
Agent profiling 1.265 s 222.715 ms (21.4%)
Total tracing 10.492 s -
Total appsec 10.759 s 266.248 ms (2.5%)
Total iast 11.001 s 508.426 ms (4.8%)
Total profiling 10.875 s 382.796 ms (3.6%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.044 s -
Agent appsec 1.186 s 141.554 ms (13.6%)
Agent iast 1.175 s 130.887 ms (12.5%)
Agent profiling 1.262 s 217.923 ms (20.9%)
Total tracing 10.473 s -
Total appsec 10.715 s 241.774 ms (2.3%)
Total iast 11.032 s 558.832 ms (5.3%)
Total profiling 10.801 s 328.149 ms (3.1%)
gantt
    title petclinic - break down per module: candidate=1.48.0-SNAPSHOT~03a01afa7b, baseline=1.48.0-SNAPSHOT~fe9f968edb

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (717.565 ms) : 0, 717565
BytebuddyAgent [candidate] (719.178 ms) : 0, 719178
GlobalTracer [baseline] (239.38 ms) : 0, 239380
GlobalTracer [candidate] (240.125 ms) : 0, 240125
AppSec [baseline] (54.958 ms) : 0, 54958
AppSec [candidate] (54.686 ms) : 0, 54686
Remote Config [baseline] (699.415 µs) : 0, 699
Remote Config [candidate] (683.643 µs) : 0, 684
Telemetry [baseline] (13.58 ms) : 0, 13580
Telemetry [candidate] (13.484 ms) : 0, 13484
section appsec
BytebuddyAgent [baseline] (736.316 ms) : 0, 736316
BytebuddyAgent [candidate] (737.445 ms) : 0, 737445
GlobalTracer [baseline] (236.267 ms) : 0, 236267
GlobalTracer [candidate] (236.311 ms) : 0, 236311
IAST [baseline] (21.435 ms) : 0, 21435
IAST [candidate] (21.508 ms) : 0, 21508
AppSec [baseline] (176.261 ms) : 0, 176261
AppSec [candidate] (175.458 ms) : 0, 175458
Remote Config [baseline] (664.381 µs) : 0, 664
Remote Config [candidate] (668.878 µs) : 0, 669
Telemetry [baseline] (8.311 ms) : 0, 8311
Telemetry [candidate] (9.05 ms) : 0, 9050
section iast
BytebuddyAgent [baseline] (840.19 ms) : 0, 840190
BytebuddyAgent [candidate] (840.396 ms) : 0, 840396
GlobalTracer [baseline] (230.343 ms) : 0, 230343
GlobalTracer [candidate] (230.533 ms) : 0, 230533
IAST [baseline] (23.577 ms) : 0, 23577
IAST [candidate] (22.78 ms) : 0, 22780
AppSec [baseline] (55.147 ms) : 0, 55147
AppSec [candidate] (55.985 ms) : 0, 55985
Remote Config [baseline] (608.489 µs) : 0, 608
Remote Config [candidate] (603.537 µs) : 0, 604
Telemetry [baseline] (8.701 ms) : 0, 8701
Telemetry [candidate] (8.693 ms) : 0, 8693
section profiling
BytebuddyAgent [baseline] (712.718 ms) : 0, 712718
BytebuddyAgent [candidate] (710.718 ms) : 0, 710718
GlobalTracer [baseline] (349.868 ms) : 0, 349868
GlobalTracer [candidate] (350.747 ms) : 0, 350747
AppSec [baseline] (54.232 ms) : 0, 54232
AppSec [candidate] (53.553 ms) : 0, 53553
Remote Config [baseline] (705.34 µs) : 0, 705
Remote Config [candidate] (698.157 µs) : 0, 698
Telemetry [baseline] (8.873 ms) : 0, 8873
Telemetry [candidate] (8.989 ms) : 0, 8989
ProfilingAgent [baseline] (96.828 ms) : 0, 96828
ProfilingAgent [candidate] (95.786 ms) : 0, 95786
Profiling [baseline] (96.854 ms) : 0, 96854
Profiling [candidate] (95.81 ms) : 0, 95810
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.48.0-SNAPSHOT~03a01afa7b, baseline=1.48.0-SNAPSHOT~fe9f968edb

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.05 s) : 0, 1050359
Total [baseline] (8.731 s) : 0, 8730819
Agent [candidate] (1.044 s) : 0, 1043903
Total [candidate] (8.649 s) : 0, 8649038
section iast
Agent [baseline] (1.171 s) : 0, 1170651
Total [baseline] (9.24 s) : 0, 9240231
Agent [candidate] (1.175 s) : 0, 1174926
Total [candidate] (9.254 s) : 0, 9253624
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.173 s) : 0, 1173360
Total [baseline] (9.202 s) : 0, 9201574
Agent [candidate] (1.189 s) : 0, 1189239
Total [candidate] (9.225 s) : 0, 9225055
section iast_TELEMETRY_OFF
Agent [baseline] (1.179 s) : 0, 1178853
Total [baseline] (9.252 s) : 0, 9251528
Agent [candidate] (1.189 s) : 0, 1189317
Total [candidate] (9.309 s) : 0, 9308735
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.05 s -
Agent iast 1.171 s 120.292 ms (11.5%)
Agent iast_HARDCODED_SECRET_DISABLED 1.173 s 123.001 ms (11.7%)
Agent iast_TELEMETRY_OFF 1.179 s 128.493 ms (12.2%)
Total tracing 8.731 s -
Total iast 9.24 s 509.412 ms (5.8%)
Total iast_HARDCODED_SECRET_DISABLED 9.202 s 470.755 ms (5.4%)
Total iast_TELEMETRY_OFF 9.252 s 520.709 ms (6.0%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.044 s -
Agent iast 1.175 s 131.023 ms (12.6%)
Agent iast_HARDCODED_SECRET_DISABLED 1.189 s 145.336 ms (13.9%)
Agent iast_TELEMETRY_OFF 1.189 s 145.414 ms (13.9%)
Total tracing 8.649 s -
Total iast 9.254 s 604.586 ms (7.0%)
Total iast_HARDCODED_SECRET_DISABLED 9.225 s 576.017 ms (6.7%)
Total iast_TELEMETRY_OFF 9.309 s 659.697 ms (7.6%)
gantt
    title insecure-bank - break down per module: candidate=1.48.0-SNAPSHOT~03a01afa7b, baseline=1.48.0-SNAPSHOT~fe9f968edb

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (723.587 ms) : 0, 723587
BytebuddyAgent [candidate] (720.05 ms) : 0, 720050
GlobalTracer [baseline] (241.461 ms) : 0, 241461
GlobalTracer [candidate] (239.637 ms) : 0, 239637
AppSec [baseline] (55.337 ms) : 0, 55337
AppSec [candidate] (54.8 ms) : 0, 54800
Remote Config [baseline] (708.755 µs) : 0, 709
Remote Config [candidate] (672.947 µs) : 0, 673
Telemetry [baseline] (13.184 ms) : 0, 13184
Telemetry [candidate] (12.817 ms) : 0, 12817
section iast
BytebuddyAgent [baseline] (836.733 ms) : 0, 836733
BytebuddyAgent [candidate] (840.314 ms) : 0, 840314
GlobalTracer [baseline] (229.595 ms) : 0, 229595
GlobalTracer [candidate] (230.522 ms) : 0, 230522
IAST [baseline] (22.986 ms) : 0, 22986
IAST [candidate] (22.953 ms) : 0, 22953
AppSec [baseline] (56.045 ms) : 0, 56045
AppSec [candidate] (55.899 ms) : 0, 55899
Remote Config [baseline] (611.623 µs) : 0, 612
Remote Config [candidate] (663.206 µs) : 0, 663
Telemetry [baseline] (8.733 ms) : 0, 8733
Telemetry [candidate] (8.714 ms) : 0, 8714
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (837.346 ms) : 0, 837346
BytebuddyAgent [candidate] (851.336 ms) : 0, 851336
GlobalTracer [baseline] (230.686 ms) : 0, 230686
GlobalTracer [candidate] (232.577 ms) : 0, 232577
IAST [baseline] (23.919 ms) : 0, 23919
IAST [candidate] (23.474 ms) : 0, 23474
AppSec [baseline] (56.001 ms) : 0, 56001
AppSec [candidate] (56.287 ms) : 0, 56287
Remote Config [baseline] (617.134 µs) : 0, 617
Remote Config [candidate] (613.384 µs) : 0, 613
Telemetry [baseline] (8.835 ms) : 0, 8835
Telemetry [candidate] (8.83 ms) : 0, 8830
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (842.666 ms) : 0, 842666
BytebuddyAgent [candidate] (851.242 ms) : 0, 851242
GlobalTracer [baseline] (231.29 ms) : 0, 231290
GlobalTracer [candidate] (232.885 ms) : 0, 232885
IAST [baseline] (22.721 ms) : 0, 22721
IAST [candidate] (22.832 ms) : 0, 22832
AppSec [baseline] (56.736 ms) : 0, 56736
AppSec [candidate] (56.795 ms) : 0, 56795
Remote Config [baseline] (623.089 µs) : 0, 623
Remote Config [candidate] (632.614 µs) : 0, 633
Telemetry [baseline] (8.697 ms) : 0, 8697
Telemetry [candidate] (8.798 ms) : 0, 8798
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2025-03-21T09:21:09 2025-03-21T09:28:56
git_branch master andrea.marziali/jetty-websocket
git_commit_date 1742520091 1742547559
git_commit_sha fe9f968 03a01af
release_version 1.48.0-SNAPSHOT~fe9f968edb 1.48.0-SNAPSHOT~03a01afa7b
start_time 2025-03-21T09:20:55 2025-03-21T09:28:42
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1742549735 1742549735
ci_job_id 858396299 858396299
ci_pipeline_id 59556411 59556411
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-9n9spsyq-project-304-concurrent-1-jvj2855l 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-9n9spsyq-project-304-concurrent-1-jvj2855l 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 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 14 metrics, 16 unstable metrics.

Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~03a01afa7b, baseline=1.48.0-SNAPSHOT~fe9f968edb
    dateFormat X
    axisFormat %s
section baseline
no_agent (382.098 µs) : 362, 402
.   : milestone, 382,
iast (513.834 µs) : 492, 536
.   : milestone, 514,
iast_FULL (738.722 µs) : 716, 761
.   : milestone, 739,
iast_GLOBAL (560.27 µs) : 538, 582
.   : milestone, 560,
iast_HARDCODED_SECRET_DISABLED (524.252 µs) : 502, 547
.   : milestone, 524,
iast_INACTIVE (470.198 µs) : 449, 492
.   : milestone, 470,
iast_TELEMETRY_OFF (503.18 µs) : 481, 525
.   : milestone, 503,
tracing (458.546 µs) : 438, 479
.   : milestone, 459,
section candidate
no_agent (388.508 µs) : 369, 408
.   : milestone, 389,
iast (520.596 µs) : 499, 543
.   : milestone, 521,
iast_FULL (735.614 µs) : 713, 758
.   : milestone, 736,
iast_GLOBAL (570.884 µs) :
8000
 549, 593
.   : milestone, 571,
iast_HARDCODED_SECRET_DISABLED (521.17 µs) : 499, 543
.   : milestone, 521,
iast_INACTIVE (474.265 µs) : 453, 496
.   : milestone, 474,
iast_TELEMETRY_OFF (499.14 µs) : 478, 521
.   : milestone, 499,
tracing (477.192 µs) : 456, 499
.   : milestone, 477,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 382.098 µs [362.187 µs, 402.008 µs] -
iast 513.834 µs [491.902 µs, 535.766 µs] 131.736 µs (34.5%)
iast_FULL 738.722 µs [716.447 µs, 760.996 µs] 356.624 µs (93.3%)
iast_GLOBAL 560.27 µs [538.102 µs, 582.438 µs] 178.172 µs (46.6%)
iast_HARDCODED_SECRET_DISABLED 524.252 µs [501.868 µs, 546.635 µs] 142.154 µs (37.2%)
iast_INACTIVE 470.198 µs [448.844 µs, 491.552 µs] 88.1 µs (23.1%)
iast_TELEMETRY_OFF 503.18 µs [481.485 µs, 524.874 µs] 121.082 µs (31.7%)
tracing 458.546 µs [437.897 µs, 479.194 µs] 76.448 µs (20.0%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 388.508 µs [368.818 µs, 408.198 µs] -
iast 520.596 µs [498.637 µs, 542.556 µs] 132.088 µs (34.0%)
iast_FULL 735.614 µs [713.498 µs, 757.729 µs] 347.106 µs (89.3%)
iast_GLOBAL 570.884 µs [549.07 µs, 592.699 µs] 182.376 µs (46.9%)
iast_HARDCODED_SECRET_DISABLED 521.17 µs [499.357 µs, 542.983 µs] 132.662 µs (34.1%)
iast_INACTIVE 474.265 µs [452.522 µs, 496.008 µs] 85.757 µs (22.1%)
iast_TELEMETRY_OFF 499.14 µs [477.539 µs, 520.741 µs] 110.632 µs (28.5%)
tracing 477.192 µs [455.575 µs, 498.809 µs] 88.684 µs (22.8%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~03a01afa7b, baseline=1.48.0-SNAPSHOT~fe9f968edb
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.364 ms) : 1344, 1384
.   : milestone, 1364,
appsec (1.738 ms) : 1714, 1762
.   : milestone, 1738,
appsec_no_iast (1.757 ms) : 1733, 1781
.   : milestone, 1757,
code_origins (1.698 ms) : 1671, 1725
.   : milestone, 1698,
iast (1.522 ms) : 1497, 1547
.   : milestone, 1522,
profiling (1.566 ms) : 1540, 1591
.   : milestone, 1566,
tracing (1.52 ms) : 1496, 1544
.   : milestone, 1520,
section candidate
no_agent (1.359 ms) : 1339, 1378
.   : milestone, 1359,
appsec (1.731 ms) : 1708, 1755
.   : milestone, 1731,
appsec_no_iast (1.75 ms) : 1725, 1774
.   : milestone, 1750,
code_origins (1.702 ms) : 1675, 1728
.   : milestone, 1702,
iast (1.518 ms) : 1493, 1542
.   : milestone, 1518,
profiling (1.533 ms) : 1509, 1556
.   : milestone, 1533,
tracing (1.498 ms) : 1473, 1524
.   : milestone, 1498,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.364 ms [1.344 ms, 1.384 ms] -
appsec 1.738 ms [1.714 ms, 1.762 ms] 373.785 µs (27.4%)
appsec_no_iast 1.757 ms [1.733 ms, 1.781 ms] 392.946 µs (28.8%)
code_origins 1.698 ms [1.671 ms, 1.725 ms] 333.98 µs (24.5%)
iast 1.522 ms [1.497 ms, 1.547 ms] 158.178 µs (11.6%)
profiling 1.566 ms [1.54 ms, 1.591 ms] 201.813 µs (14.8%)
tracing 1.52 ms [1.496 ms, 1.544 ms] 156.483 µs (11.5%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.359 ms [1.339 ms, 1.378 ms] -
appsec 1.731 ms [1.708 ms, 1.755 ms] 372.855 µs (27.4%)
appsec_no_iast 1.75 ms [1.725 ms, 1.774 ms] 391.331 µs (28.8%)
code_origins 1.702 ms [1.675 ms, 1.728 ms] 343.11 µs (25.3%)
iast 1.518 ms [1.493 ms, 1.542 ms] 158.943 µs (11.7%)
profiling 1.533 ms [1.509 ms, 1.556 ms] 174.263 µs (12.8%)
tracing 1.498 ms [1.473 ms, 1.524 ms] 139.63 µs (10.3%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/jetty-websocket
git_commit_date 1742520091 1742547559
git_commit_sha fe9f968 03a01af
release_version 1.48.0-SNAPSHOT~fe9f968edb 1.48.0-SNAPSHOT~03a01afa7b
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1742550301 1742550301
ci_job_id 858396300 858396300
ci_pipeline_id 59556411 59556411
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-yzulyy-j-project-304-concurrent-2-nsa9p0em 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-yzulyy-j-project-304-concurrent-2-nsa9p0em 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 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 11 metrics, 1 unstable metrics.

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~03a01afa7b, baseline=1.48.0-SNAPSHOT~fe9f968edb
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.478 ms) : 1467, 1489
.   : milestone, 1478,
appsec (2.359 ms) : 2315, 2403
.   : milestone, 2359,
iast (2.132 ms) : 2076, 2188
.   : milestone, 2132,
iast_GLOBAL (2.169 ms) : 2113, 2225
.   : milestone, 2169,
profiling (2.46 ms) : 2278, 2643
.   : milestone, 2460,
tracing (1.97 ms) : 1927, 2013
.   : milestone, 1970,
section candidate
no_agent (1.478 ms) : 1467, 1490
.   : milestone, 1478,
appsec (2.359 ms) : 2315, 2403
.   : milestone, 2359,
iast (2.128 ms) : 2072, 2183
.   : milestone, 2128,
iast_GLOBAL (2.171 ms) : 2115, 2227
.   : milestone, 2171,
profiling (1.973 ms) : 1929, 2017
.   : milestone, 1973,
tracing (1.958 ms) : 1916, 2001
.   : milestone, 1958,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.478 ms [1.467 ms, 1.489 ms] -
appsec 2.359 ms [2.315 ms, 2.403 ms] 881.006 µs (59.6%)
iast 2.132 ms [2.076 ms, 2.188 ms] 654.012 µs (44.2%)
iast_GLOBAL 2.169 ms [2.113 ms, 2.225 ms] 691.108 µs (46.8%)
profiling 2.46 ms [2.278 ms, 2.643 ms] 982.312 µs (66.5%)
tracing 1.97 ms [1.927 ms, 2.013 ms] 491.867 µs (33.3%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.478 ms [1.467 ms, 1.49 ms] -
appsec 2.359 ms [2.315 ms, 2.403 ms] 880.899 µs (59.6%)
iast 2.128 ms [2.072 ms, 2.183 ms] 649.461 µs (43.9%)
iast_GLOBAL 2.171 ms [2.115 ms, 2.227 ms] 692.534 µs (46.9%)
profiling 1.973 ms [1.929 ms, 2.017 ms] 494.807 µs (33.5%)
tracing 1.958 ms [1.916 ms, 2.001 ms] 480.093 µs (32.5%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~03a01afa7b, baseline=1.48.0-SNAPSHOT~fe9f968edb
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.031 s) : 15031000, 15031000
.   : milestone, 15031000,
appsec (14.955 s) : 14955000, 14955000
.   : milestone, 14955000,
iast (18.938 s) : 18938000, 18938000
.   : milestone, 18938000,
iast_GLOBAL (17.878 s) : 17878000, 17878000
.   : milestone, 17878000,
profiling (14.847 s) : 14847000, 14847000
.   : milestone, 14847000,
tracing (15.231 s) : 15231000, 15231000
.   : milestone, 15231000,
section candidate
no_agent (15.3 s) : 15300000, 15300000
.   : milestone, 15300000,
appsec (14.849 s) : 14849000, 14849000
.   : milestone, 14849000,
iast (18.508 s) : 18508000, 18508000
.   : milestone, 18508000,
iast_GLOBAL (17.667 s) : 17667000, 17667000
.   : milestone, 17667000,
profiling (15.042 s) : 15042000, 15042000
.   : milestone, 15042000,
tracing (15.275 s) : 15275000, 15275000
.   : milestone, 15275000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.031 s [15.031 s, 15.031 s] -
appsec 14.955 s [14.955 s, 14.955 s] -76.0 ms (-0.5%)
iast 18.938 s [18.938 s, 18.938 s] 3.907 s (26.0%)
iast_GLOBAL 17.878 s [17.878 s, 17.878 s] 2.847 s (18.9%)
profiling 14.847 s [14.847 s, 14.847 s] -184.0 ms (-1.2%)
tracing 15.231 s [15.231 s, 15.231 s] 200.0 ms (1.3%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.3 s [15.3 s, 15.3 s] -
appsec 14.849 s [14.849 s, 14.849 s] -451.0 ms (-2.9%)
iast 18.508 s [18.508 s, 18.508 s] 3.208 s (21.0%)
iast_GLOBAL 17.667 s [17.667 s, 17.667 s] 2.367 s (15.5%)
profiling 15.042 s [15.042 s, 15.042 s] -258.0 ms (-1.7%)
tracing 15.275 s [15.275 s, 15.275 s] -25.0 ms (-0.2%)

@amarziali amarziali force-pushed the andrea.marziali/jetty-websocket branch from a83c33a to 49a2bec Compare March 17, 2025 09:05
@amarziali amarziali force-pushed the andrea.marziali/jetty-websocket branch from cb50a9f to 049b1b0 Compare March 17, 2025 11:41
DECORATE.onFrameEnd(closeContext);
}
} else {
delegate.invoke(session, closeReason);
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we need to know if we are missing handlerContext assuming these handlers are successfully installed? I mean, could the fact that handlerContext is null highlight a problem that we would like to know about?

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 considered add a logging here however the fact that the context is not there is just before we failed capturing the handshake span (or because the feature is just disabled). So adding a log here did not add valuable information in my opinion

Copy link
Contributor

Choose a reason for hiding this comment

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

I see. Thank you for the explanation.

Copy link
Contributor
@ygree ygree 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 to me, with small suggestions on how to improve clarity for the reader.

@amarziali amarziali requested a review from ygree March 21, 2025 09:01
MethodHandleWrappers.OPEN_METHOD_HANDLE,
0,
openHandle,
InstrumentationContext.get(Session.class, HandlerContext.Sender.class),

Choose a reason for hiding this comment

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

It's a pity that we don't rewrite helpers so we could leverage contexts in cases like this 😢

}

@Override
public Map<String, String> adviceShading() {

Choose a reason for hiding this comment

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

Didn't know about this guy, nice!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

it's a gift from @mcculls ❤️

< 9E88 div data-view-component="true" class="TimelineItem"> manuel-alvarez-alvarez
Copy link
Member
@manuel-alvarez-alvarez manuel-alvarez-alvarez left a comment

Choose a reason for hiding this comment

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

LGTM, although a more informed review is needed.

P.S. Great job with the java.lang.invoke work in the PR! 😄

Copy link
Contributor
@ygree ygree left a comment

Choose a reason for hiding this comment

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

Looks good! It was also interesting to see some new instrumentation approaches you used in the PR. Congratulations on completing another WS instrumentation!

@amarziali amarziali merged commit dfe3134 into master Mar 24, 2025
246 of 269 checks passed
@amarziali amarziali deleted the andrea.marziali/jetty-websocket branch March 24, 2025 09:31
@github-actions github-actions bot added this to the 1.48.0 milestone Mar 24, 2025
svc-squareup-copybara pushed a commit to cashapp/misk that referenced this pull request Apr 11, 2025
| Package | Type | Package file | Manager | Update | Change |
|---|---|---|---|---|---|
| org.flywaydb.flyway | plugin | misk/gradle/libs.versions.toml | gradle
| minor | `11.6.0` -> `11.7.0` |
|
[com.squareup.okio:okio-fakefilesystem](https://github.com/square/okio)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`3.10.2` -> `3.11.0` |
| [com.squareup.okio:okio](https://github.com/square/okio) |
dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`3.10.2` -> `3.11.0` |
|
[com.autonomousapps.dependency-analysis](https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin)
| plugin | misk/gradle/libs.versions.toml | gradle | minor | `2.15.0` ->
`2.16.0` |
| [com.datadoghq:dd-trace-api](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.47.3` -> `1.48.1` |
| [com.datadoghq:dd-trace-ot](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.47.3` -> `1.48.1` |
| [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.31.18` -> `2.31.20` |
| [software.amazon.awssdk:sqs](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.31.18` -> `2.31.20` |
|
[software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava)
| dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.31.18` -> `2.31.20` |
| [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.31.18` -> `2.31.20` |
| [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.31.18` -> `2.31.20` |
| [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.31.18` -> `2.31.20` |
| [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.31.18` -> `2.31.20` |

---

### Release Notes

<details>
<summary>square/okio (com.squareup.okio:okio-fakefilesystem)</summary>

###
[`v3.11.0`](https://github.com/square/okio/blob/HEAD/CHANGELOG.md#Version-3110)

*2025-04-09*

-   Fix: Clear the deflater's byte array reference
-   New: Faster implementation of `String.decodeHex()` on Kotlin/JS.
- New: Declare `EXACTLY_ONCE` execution for blocks like `Closeable.use
{}` and `FileSystem.read {}`.
-   Upgrade: \[Kotlin 2.1.20]\[kotlin\_2\_1\_20].

</details>

<details>
<summary>autonomousapps/dependency-analysis-android-gradle-plugin
(com.autonomousapps.dependency-analysis)</summary>

###
[`v2.16.0`](https://github.com/autonomousapps/dependency-analysis-android-gradle-plugin/blob/HEAD/CHANGELOG.md#Version-2160)

-   \[Feat]: support `com.android.test` projects.
-   \[Feat]: support typesafe project accessors with opt-in.

```kotlin
dependencyAnalysis {
  useTypesafeProjectAccessors(true) // false by default
}
```

</details>

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

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

### Components

#### Tracer internal logging

- 🐛 Remove print line causing unnecessary logs
([#&#8203;8687](DataDog/dd-trace-java#8687) -
[@&#8203;sarahchen6](https://github.com/sarahchen6))

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

### Known Bugs

> \[!NOTE]
> If you are experiencing issues with spamming timeout logs, please
update to the [latest
version](https://github.com/DataDog/dd-trace-java/releases/latest) or
set
[JDK_SOCKET_ENABLED](https://github.com/DataDog/dd-trace-java/blob/33fc3c9a9b7cda3beda88b8b3e5224ae2b10764a/dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java#L98)
to false.

### Components

#### Application Security Management (IAST)

- ✨ Fix vulnerability location org.jose4j.lang.HashUtil
([#&#8203;8610](DataDog/dd-trace-java#8610) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Fix weak randomness in oracle.ucp.util.OpaqueString
([#&#8203;8609](DataDog/dd-trace-java#8609) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Fix weak hash false positive in
oracle.security.o5logon.O5Logon
([#&#8203;8608](DataDog/dd-trace-java#8608) -
[@&#8203;jandro996](https://github.com/jandro996))
- 🐛 Prevent before callsites targeting constructors in super calls
([#&#8203;8549](DataDog/dd-trace-java#8549) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))

#### Application Security Management (WAF)

- ✨ Update login events public SDK to V2
([#&#8203;8620](DataDog/dd-trace-java#8620) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- 🐛 Send RASP LFI capability only when AppSec is statically enabled
([#&#8203;8573](DataDog/dd-trace-java#8573) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Improve detection of missing request end events
([#&#8203;8510](DataDog/dd-trace-java#8510) -
[@&#8203;smola](https://github.com/smola))
- 🧹 Remove remote configuration for API Security sampling rate
([#&#8203;8486](DataDog/dd-trace-java#8486) -
[@&#8203;smola](https://github.com/smola))
- ✨ Add setUser to user monitoring SDK
([#&#8203;8482](DataDog/dd-trace-java#8482) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ Add missing address for signup event
([#&#8203;8469](DataDog/dd-trace-java#8469) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ Allow login events SDK to be used with appsec disabled
([#&#8203;8464](DataDog/dd-trace-java#8464) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ Add support for endpoint discovery in spring mvc
([#&#8203;8352](DataDog/dd-trace-java#8352) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- ✨ New API Security sampling algorithm
([#&#8203;8178](DataDog/dd-trace-java#8178) -
[@&#8203;ValentinZakharov](https://github.com/ValentinZakharov))

#### Build & Tooling

- ✨ Add buffer size customizability to JDK UDS support
([#&#8203;8629](DataDog/dd-trace-java#8629) -
[@&#8203;sarahchen6](https://github.com/sarahchen6))
- ✨ Add JDK built-in support for UDS on Java 16+
([#&#8203;8314](DataDog/dd-trace-java#8314) -
[@&#8203;sarahchen6](https://github.com/sarahchen6))

#### Configuration at Runtime

- 🐛 Send RASP LFI capability only when AppSec is statically enabled
([#&#8203;8573](DataDog/dd-trace-java#8573) -
[@&#8203;jandro996](https://github.com/jandro996))

#### Continuous Integration Visibility

- 🐛 Prevent double reporting of Scalatest events when using SBT with
test forking
([#&#8203;8682](DataDog/dd-trace-java#8682) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🐛 Shutdown CI Visibility test event handlers before tracer
([#&#8203;8677](DataDog/dd-trace-java#8677) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🐛 Do not apply JUnit 4 instrumentation to MUnit runners
([#&#8203;8675](DataDog/dd-trace-java#8675),
[#&#8203;8683](DataDog/dd-trace-java#8683) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Remove error log when source path resolution fails on
isModified check
([#&#8203;8663](DataDog/dd-trace-java#8663) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Implement tests reordering for JUnit 4
([#&#8203;8650](DataDog/dd-trace-java#8650) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- 🐛 Set default Attempt to Fix retries if none provided from the
backend
([#&#8203;8615](DataDog/dd-trace-java#8615) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Allow to manually set PR info
([#&#8203;8566](DataDog/dd-trace-java#8566) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- 🐛 Fix Test Optimization init when repo root cannot be determined
([#&#8203;8533](DataDog/dd-trace-java#8533) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Add capabilities tagging
([#&#8203;8499](DataDog/dd-trace-java#8499),
[#&#8203;8540](DataDog/dd-trace-java#8540) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))

#### Crash tracking

- 🐛 Remove dependency on bash from crash/oome uploder scripts
([#&#8203;8652](DataDog/dd-trace-java#8652) -
[@&#8203;jbachorik](https://github.com/jbachorik))

#### Data Streams Monitoring

- ✨ e2e pipeline configuration when data jobs is enabled
([#&#8203;8553](DataDog/dd-trace-java#8553) -
[@&#8203;kr-igor](https://github.com/kr-igor))

#### Dynamic Instrumentation

- 🐛 Fix In-Product when config is empty
([#&#8203;8679](DataDog/dd-trace-java#8679) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Add support for filtering shaded third-party libs
([#&#8203;8612](DataDog/dd-trace-java#8612) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Add In-Product Enablement
([#&#8203;8587](DataDog/dd-trace-java#8587) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨⚡ Reduce footprint of SourceFile tracking
([#&#8203;8524](DataDog/dd-trace-java#8524) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨⚡ Optimize the SourceFile tracking
([#&#8203;8520](DataDog/dd-trace-java#8520) -
[@&#8203;jpbempel](https://github.com/jpbempel))

#### OpenTracing

- 🧹 Remove activeScope() use in OpenTracing shim
([#&#8203;8478](DataDog/dd-trace-java#8478) -
[@&#8203;mcculls](https://github.com/mcculls))

#### Profiling

- ✨ Add profiler env check command to AgentCLI
([#&#8203;8671](DataDog/dd-trace-java#8671) -
[@&#8203;jbachorik](https://github.com/jbachorik))

- ✨ Bump ddprof to 1.23.0
([#&#8203;8668](DataDog/dd-trace-java#8668) -
[@&#8203;jbachorik](https://github.com/jbachorik))
- Fix a crash related to ElfParser::loadSymbolTable
([#&#8203;191](DataDog/dd-trace-java#191)) by
[@&#8203;yanglong1010](https://github.com/yanglong1010) in
DataDog/java-profiler#192
- Unwind String.indexOf intrinsic on AArch64 by
[@&#8203;MattAlp](https://github.com/MattAlp) in
DataDog/java-profiler#193
- Fix Java 24 support by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#194
- A set of fixes related to clang, aarch64 and musl pecularities of
vmstructs stack unwinder by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#199

- 🐛 Remove process information from JFR recording
([#&#8203;8661](DataDog/dd-trace-java#8661) -
[@&#8203;r1viollet](https://github.com/r1viollet))

- 🐛 Make TempLocationManager USER aware
([#&#8203;8605](DataDog/dd-trace-java#8605) -
[@&#8203;jbachorik](https://github.com/jbachorik))

- ✨ Extract git tags from embedded git.properties and
datadog_git.properties
([#&#8203;8561](DataDog/dd-trace-java#8561) -
[@&#8203;wmouchere](https://github.com/wmouchere))

#### Telemetry

- 🐛 Fix appsec.rasp.error and appsec.waf.error telemetry metrics
([#&#8203;8624](DataDog/dd-trace-java#8624) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Create metric: appsec.rasp.rule.skipped
([#&#8203;8618](DataDog/dd-trace-java#8618) -
[@&#8203;jandro996](https://github.com/jandro996))
- ✨ Extract git tags from embedded git.properties and
datadog_git.properties
([#&#8203;8561](DataDog/dd-trace-java#8561) -
[@&#8203;wmouchere](https://github.com/wmouchere))

#### Testing

- 🧹 Simplify ssi tests one-pipeline
([#&#8203;8558](DataDog/dd-trace-java#8558) -
[@&#8203;robertomonteromiguel](https://github.com/robertomonteromiguel))
- ✨ Add smoke tests for java's concurrent API
([#&#8203;8438](DataDog/dd-trace-java#8438) -
[@&#8203;sarahchen6](https://github.com/sarahchen6))

#### Trace context propagation

- ✨ Adding Support for `TRACE_PROPAGATION_BEHAVIOR_EXTRACT`
([#&#8203;8535](DataDog/dd-trace-java#8535) -
[@&#8203;mhlidd](https://github.com/mhlidd))

#### Tracer core

- 🐛 Ensure shaded helpers have unique names
([#&#8203;8559](DataDog/dd-trace-java#8559) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Support common config sources for user-provided git info
([#&#8203;8547](DataDog/dd-trace-java#8547) -
[@&#8203;nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog))
- ✨ Make the default config sources more robust when a security
manager is installed
([#&#8203;8544](DataDog/dd-trace-java#8544) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Support targeting services with configurations in stable
configuration file
([#&#8203;8526](DataDog/dd-trace-java#8526) -
[@&#8203;mtoffl01](https://github.com/mtoffl01))
- ✨ Add new parser for `DD_TAGS` and prioritizing `DD_SERVICE`
([#&#8203;8296](DataDog/dd-trace-java#8296) -
[@&#8203;mhlidd](https://github.com/mhlidd))

#### Tracer internal logging

- 🐛 Add missing debug log for the cloudPayloadTaggingServices config
([#&#8203;8600](DataDog/dd-trace-java#8600) -
[@&#8203;ygree](https://github.com/ygree))
- ✨ Add the possibility to output the logs of the Java tracer
in JSON
([#&#8203;8083](DataDog/dd-trace-java#8083) -
[@&#8203;cecile75](https://github.com/cecile75))

#### Tracer public API

- ✨ Introducing `DD_TRACE_EXPERIMENTAL_FEATURES_ENABLED` Config
([#&#8203;8536](DataDog/dd-trace-java#8536) -
[@&#8203;mhlidd](https://github.com/mhlidd))
- ✨ Config Consistency Round 2
([#&#8203;8489](DataDog/dd-trace-java#8489) -
[@&#8203;mhlidd](https://github.com/mhlidd))

### Instrumentations

####

- 🐛 Fix NPE in getMdcCopy of LoggingEventInstrumentation
([#&#8203;8599](DataDog/dd-trace-java#8599) -
[@&#8203;ygree](https://github.com/ygree))

#### Apache Spark instrumentation

- ✨ Instrument Runtime.exit() to finish spark application spans
([#&#8203;8572](DataDog/dd-trace-java#8572) -
[@&#8203;paul-laffon-dd](https://github.com/paul-laffon-dd))
- ✨ Configure OpenLineage if present in Spark instrumentation
([#&#8203;8541](DataDog/dd-trace-java#8541) -
[@&#8203;mobuchowski](https://github.com/mobuchowski))

#### Armeria Instrumentation

- ✨ Support armeria grpc 1.32.3
([#&#8203;8606](DataDog/dd-trace-java#8606) -
[@&#8203;github-actions](https://github.com/github-actions)\[bot])

#### AWS DynamoDB Instrumentation

- ✨ Create DynamoDB instrumentation + add span pointers for
`updateItem` and `deleteItem`
([#&#8203;8490](DataDog/dd-trace-java#8490) -
[@&#8203;nhulston](https://github.com/nhulston))

#### AWS SDK instrumentation

- ✨ Add DynamoDB in
DEFAULT_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES
([#&#8203;8595](DataDog/dd-trace-java#8595) -
[@&#8203;joeyzhao2018](https://github.com/joeyzhao2018))

#### Azure Functions instrumentation

- ✨ Enable tracer computed trace metrics by default for Azure
Functions
([#&#8203;8518](DataDog/dd-trace-java#8518) -
[@&#8203;duncanpharvey](https://github.com/duncanpharvey))
- 💡 Add azure-functions instrumentation
([#&#8203;8432](DataDog/dd-trace-java#8432) -
[@&#8203;duncanpharvey](https://github.com/duncanpharvey))

#### Core Java language instrumentation

- 🐛 Fix ForkJoinPool.execute() instrumentation on Java 21+
([#&#8203;8560](DataDog/dd-trace-java#8560) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))

#### Eclipse Vert.x instrumentation

- ✨ Add vertx postgresql client instrumentation
([#&#8203;8471](DataDog/dd-trace-java#8471) -
[@&#8203;vandonr](https://github.com/vandonr) - thanks for the
contribution!)

#### Kafka instrumentation

- ✨ Support and test kafka-clients 4
([#&#8203;8581](DataDog/dd-trace-java#8581) -
[@&#8203;amarziali](https://github.com/amarziali))

#### Kotlin instrumentation

- ✨ Avoid disconnected traces when using Kotlin flowOn
([#&#8203;8651](DataDog/dd-trace-java#8651) -
[@&#8203;mcculls](https://github.com/mcculls))

#### OpenTelemetry instrumentation

- 🧹 Migrate OtelContext wrapper to new internal Context API
([#&#8203;8645](DataDog/dd-trace-java#8645) -
[@&#8203;mcculls](https://github.com/mcculls))

#### Spring instrumentation

- 🐛 Support CompletableFuture on spring webmvc controllers
([#&#8203;8659](DataDog/dd-trace-java#8659) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Add support for endpoint discovery in spring mvc
([#&#8203;8352](DataDog/dd-trace-java#8352) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))

#### WebSocket Instrumentation

- ✨ Instrument Jetty websocket pojo
([#&#8203;8562](DataDog/dd-trace-java#8562) -
[@&#8203;amarziali](https://github.com/amarziali))
- 💡 Instrument Java Websocket API (JSR356)
([#&#8203;8440](DataDog/dd-trace-java#8440) -
[@&#8203;amarziali](https://github.com/amarziali))

#### All other instrumentations

- ✨ Introduce cache for peer.hostname lookup
([#&#8203;8601](DataDog/dd-trace-java#8601) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Support pekko http 1.1
([#&#8203;8532](DataDog/dd-trace-java#8532) -
[@&#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**: Never, 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: 331314f71acaced3adc75ea5d7e855c248d593fc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
inst: websocket WebSocket Instrumentation type: enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants
0