Skip to content

Instrument Java Websocket API (JSR356) #8440

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 15 commits into from
Mar 10, 2025
Merged

Conversation

amarziali
Copy link
Collaborator

@amarziali amarziali commented Feb 24, 2025

What Does This Do

Instrumenter module for javax.websocket and jakarta.websocket APIs. Supports both client and server API.

Provides spans for:

  • Message send (websocket.send)
  • Message receive (websocket.receive)
  • Connection close (websocket.close)

Tested with

  • Tyrus (reference implementation)
  • Tomcat 8+
  • Jetty 9+
  • Undertow
  • Spring boot via WebsocketHandler (tomcat based. netty websockets are not yet implemented since not implementing this API)

Limitations

  • POJO based endpoints are not supported in jetty since jetty does not build adapters on top of Endpoint class but direct calls annotated methods via MethodHandler. An additional work is still needed to support them
  • Client API implementations not completely tested

Motivation

Additional Notes

Contributor Checklist

Jira ticket: AIDM-535

@pr-commenter
Copy link

pr-commenter bot commented Feb 24, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/jsr356
git_commit_date 1741601078 1741602010
git_commit_sha 01d3277 978afb6
release_version 1.48.0-SNAPSHOT~01d3277601 1.48.0-SNAPSHOT~978afb6bc8
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1741604454 1741604454
ci_job_id 839711790 839711790
ci_pipeline_id 58248718 58248718
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zhk6exes-project-304-concurrent-0-8ycdqizx 6.8.0-1023-aws #25~22.04.1-Ubuntu SMP Tue Jan 28 12:51:22 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zhk6exes-project-304-concurrent-0-8ycdqizx 6.8.0-1023-aws #25~22.04.1-Ubuntu SMP Tue Jan 28 12:51:22 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~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.049 s) : 0, 1049328
Total [baseline] (10.492 s) : 0, 10492142
Agent [candidate] (1.046 s) : 0, 1046224
Total [candidate] (10.429 s) : 0, 10428702
section appsec
Agent [baseline] (1.188 s) : 0, 1188332
Total [baseline] (10.716 s) : 0, 10715651
Agent [candidate] (1.186 s) : 0, 1185783
Total [candidate] (10.735 s) : 0, 10734597
section iast
Agent [baseline] (1.194 s) : 0, 1193895
Total [baseline] (10.973 s) : 0, 10973498
Agent [candidate] (1.171 s) : 0, 1171062
Total [candidate] (11.078 s) : 0, 11078275
section profiling
Agent [baseline] (1.263 s) : 0, 1262744
Total [baseline] (10.844 s) : 0, 10844474
Agent [candidate] (1.265 s) : 0, 1265263
Total [candidate] (10.81 s) : 0, 10809511
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.049 s -
Agent appsec 1.188 s 139.004 ms (13.2%)
Agent iast 1.194 s 144.567 ms (13.8%)
Agent profiling 1.263 s 213.416 ms (20.3%)
Total tracing 10.492 s -
Total appsec 10.716 s 223.509 ms (2.1%)
Total iast 10.973 s 481.356 ms (4.6%)
Total profiling 10.844 s 352.332 ms (3.4%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.046 s -
Agent appsec 1.186 s 139.559 ms (13.3%)
Agent iast 1.171 s 124.838 ms (11.9%)
Agent profiling 1.265 s 219.039 ms (20.9%)
Total tracing 10.429 s -
Total appsec 10.735 s 305.895 ms (2.9%)
Total iast 11.078 s 649.573 ms (6.2%)
Total profiling 10.81 s 380.809 ms (3.7%)
gantt
    title petclinic - break down per module: candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (723.37 ms) : 0, 723370
BytebuddyAgent [candidate] (723.217 ms) : 0, 723217
GlobalTracer [baseline] (240.971 ms) : 0, 240971
GlobalTracer [candidate] (239.704 ms) : 0, 239704
AppSec [baseline] (55.333 ms) : 0, 55333
AppSec [candidate] (55.422 ms) : 0, 55422
Remote Config [baseline] (716.565 µs) : 0, 717
Remote Config [candidate] (703.652 µs) : 0, 704
Telemetry [baseline] (13.944 ms) : 0, 13944
Telemetry [candidate] (12.231 ms) : 0, 12231
section appsec
BytebuddyAgent [baseline] (738.995 ms) : 0, 738995
BytebuddyAgent [candidate] (738.375 ms) : 0, 738375
GlobalTracer [baseline] (237.366 ms) : 0, 237366
GlobalTracer [candidate] (236.553 ms) : 0, 236553
AppSec [baseline] (176.939 ms) : 0, 176939
AppSec [candidate] (176.113 ms) : 0, 176113
Remote Config [baseline] (670.97 µs) : 0, 671
Remote Config [candidate] (682.14 µs) : 0, 682
Telemetry [baseline] (8.665 ms) : 0, 8665
Telemetry [candidate] (8.38 ms) : 0, 8380
IAST [baseline] (21.606 ms) : 0, 21606
IAST [candidate] (21.475 ms) : 0, 21475
section iast
BytebuddyAgent [baseline] (855.13 ms) : 0, 855130
BytebuddyAgent [candidate] (837.088 ms) : 0, 837088
GlobalTracer [baseline] (233.431 ms) : 0, 233431
GlobalTracer [candidate] (230.387 ms) : 0, 230387
AppSec [baseline] (57.283 ms) : 0, 57283
AppSec [candidate] (55.888 ms) : 0, 55888
Remote Config [baseline] (629.959 µs) : 0, 630
Remote Config [candidate] (631.118 µs) : 0, 631
Telemetry [baseline] (8.833 ms) : 0, 8833
Telemetry [candidate] (8.768 ms) : 0, 8768
IAST [baseline] (23.365 ms) : 0, 23365
IAST [candidate] (23.383 ms) : 0, 23383
section profiling
ProfilingAgent [baseline] (97.28 ms) : 0, 97280
ProfilingAgent [candidate] (96.65 ms) : 0, 96650
BytebuddyAgent [baseline] (709.767 ms) : 0, 709767
BytebuddyAgent [candidate] (712.628 ms) : 0, 712628
GlobalTracer [baseline] (350.423 ms) : 0, 350423
GlobalTracer [candidate] (351.717 ms) : 0, 351717
AppSec [baseline] (55.1 ms) : 0, 55100
AppSec [candidate] (54.081 ms) : 0, 54081
Remote Config [baseline] (688.02 µs) : 0, 688
Remote Config [candidate] (672.501 µs) : 0, 673
Telemetry [baseline] (9.001 ms) : 0, 9001
Telemetry [candidate] (8.954 ms) : 0, 8954
Profiling [baseline] (97.305 ms) : 0, 97305
Profiling [candidate] (96.677 ms) : 0, 96677
Loading
Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.04 s) : 0, 1039824
Total [baseline] (8.662 s) : 0, 8661913
Agent [candidate] (1.046 s) : 0, 1046273
Total [candidate] (8.697 s) : 0, 8696938
section iast
Agent [baseline] (1.173 s) : 0, 1172608
Total [baseline] (9.221 s) : 0, 9220718
Agent [candidate] (1.177 s) : 0, 1176620
Total [candidate] (9.26 s) : 0, 9259802
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.175 s) : 0, 1174887
Total [baseline] (9.221 s) : 0, 9221237
Agent [candidate] (1.173 s) : 0, 1173015
Total [candidate] (9.152 s) : 0, 9151745
section iast_TELEMETRY_OFF
Agent [baseline] (1.176 s) : 0, 1176153
Total [baseline] (9.239 s) : 0, 9238611
Agent [candidate] (1.176 s) : 0, 1175518
Total [candidate] (9.257 s) : 0, 9256836
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.04 s -
Agent iast 1.173 s 132.784 ms (12.8%)
Agent iast_HARDCODED_SECRET_DISABLED 1.175 s 135.063 ms (13.0%)
Agent iast_TELEMETRY_OFF 1.176 s 136.329 ms (13.1%)
Total tracing 8.662 s -
Total iast 9.221 s 558.805 ms (6.5%)
Total iast_HARDCODED_SECRET_DISABLED 9.221 s 559.325 ms (6.5%)
Total iast_TELEMETRY_OFF 9.239 s 576.699 ms (6.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.046 s -
Agent iast 1.177 s 130.347 ms (12.5%)
Agent iast_HARDCODED_SECRET_DISABLED 1.173 s 126.742 ms (12.1%)
Agent iast_TELEMETRY_OFF 1.176 s 129.245 ms (12.4%)
Total tracing 8.697 s -
Total iast 9.26 s 562.864 ms (6.5%)
Total iast_HARDCODED_SECRET_DISABLED 9.152 s 454.807 ms (5.2%)
Total iast_TELEMETRY_OFF 9.257 s 559.898 ms (6.4%)
gantt
    title insecure-bank - break down per module: candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (717.941 ms) : 0, 717941
BytebuddyAgent [candidate] (722.869 ms) : 0, 722869
GlobalTracer [baseline] (239.692 ms) : 0, 239692
GlobalTracer [candidate] (239.184 ms) : 0, 239184
AppSec [baseline] (55.373 ms) : 0, 55373
AppSec [candidate] (55.074 ms) : 0, 55074
Remote Config [baseline] (700.15 µs) : 0, 700
Remote Config [candidate] (696.743 µs) : 0, 697
Telemetry [baseline] (11.331 ms) : 0, 11331
Telemetry [candidate] (13.523 ms) : 0, 13523
section iast
BytebuddyAgent [baseline] (838.149 ms) : 0, 838149
BytebuddyAgent [candidate] (841.495 ms) : 0, 841495
GlobalTracer [baseline] (230.583 ms) : 0, 230583
GlobalTracer [candidate] (231.352 ms) : 0, 231352
IAST [baseline] (22.82 ms) : 0, 22820
IAST [candidate] (23.568 ms) : 0, 23568
AppSec [baseline] (56.804 ms) : 0, 56804
AppSec [candidate] (56.015 ms) : 0, 56015
Remote Config [baseline] (616.007 µs) : 0, 616
Remote Config [candidate] (625.884 µs) : 0, 626
Telemetry [baseline] (8.726 ms) : 0, 8726
Telemetry [candidate] (8.716 ms) : 0, 8716
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (837.443 ms) : 0, 837443
BytebuddyAgent [candidate] (838.654 ms) : 0, 838654
GlobalTracer [baseline] (232.264 ms) : 0, 232264
GlobalTracer [candidate] (230.689 ms) : 0, 230689
IAST [baseline] (23.353 ms) : 0, 23353
IAST [candidate] (22.966 ms) : 0, 22966
AppSec [baseline] (57.444 ms) : 0, 57444
AppSec [candidate] (56.396 ms) : 0, 56396
Remote Config [baseline] (631.919 µs) : 0, 632
Remote Config [candidate] (605.039 µs) : 0, 605
Telemetry [baseline] (8.88 ms) : 0, 8880
Telemetry [candidate] (8.71 ms) : 0, 8710
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (840.273 ms) : 0, 840273
BytebuddyAgent [candidate] (840.591 ms) : 0, 840591
GlobalTracer [baseline] (231.724 ms) : 0, 231724
GlobalTracer [candidate] (231.041 ms) : 0, 231041
IAST [baseline] (22.767 ms) : 0, 22767
IAST [candidate] (22.552 ms) : 0, 22552
AppSec [baseline] (56.928 ms) : 0, 56928
AppSec [candidate] (56.998 ms) : 0, 56998
Remote Config [baseline] (634.544 µs) : 0, 635
Remote Config [candidate] (632.776 µs) : 0, 633
Telemetry [baseline] (8.722 ms) : 0, 8722
Telemetry [candidate] (8.68 ms) : 0, 8680
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
end_time 2025-03-10T10:31:11 2025-03-10T10:38:56
git_branch master andrea.marziali/jsr356
git_commit_date 1741601078 1741602010
git_commit_sha 01d3277 978afb6
release_version 1.48.0-SNAPSHOT~01d3277601 1.48.0-SNAPSHOT~978afb6bc8
start_time 2025-03-10T10:30:57 2025-03-10T10:38:42
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1741603533 1741603533
ci_job_id 839711791 839711791
ci_pipeline_id 58248718 58248718
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-jboiwnx-project-304-concurrent-0-juaql6uw 6.8.0-1023-aws #25~22.04.1-Ubuntu SMP Tue Jan 28 12:51:22 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-jboiwnx-project-304-concurrent-0-juaql6uw 6.8.0-1023-aws #25~22.04.1-Ubuntu SMP Tue Jan 28 12:51:22 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~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601
    dateFormat X
    axisFormat %s
section baseline
no_agent (382.209 µs) : 362, 402
.   : milestone, 382,
iast (512.257 µs) : 490, 534
.   : milestone, 512,
iast_FULL (728.815 µs) : 707, 751
.   : milestone, 729,
iast_GLOBAL (552.886 µs) : 531, 575
.   : milestone, 553,
iast_HARDCODED_SECRET_DISABLED (512.166 µs) : 490, 534
.   : milestone, 512,
iast_INACTIVE (458.394 µs) : 438, 479
.   : milestone, 458,
iast_TELEMETRY_OFF (494.238 µs) : 472, 517
.   : milestone, 494,
tracing (460.098 µs) : 439, 481
.   : milestone, 460,
section candidate
no_agent (384.529 µs) : 365, 405
.   : milestone, 385,
iast (512.229 µs) : 490, 534
.   : milestone, 512,
iast_FULL (729.069 µs) : 707, 751
.   : milestone, 729,
iast_GLOBAL (551.716 µs) : 530, 573
.   : milestone, 552,
iast_HARDCODED_SECRET_DISABLED (516.784 µs) : 494, 539
.   : milestone, 517,
iast_INACTIVE (458.071 µs) : 437, 479
.   : milestone, 458,
iast_TELEMETRY_OFF (497.255 µs) : 476, 519
.   : milestone, 497,
tracing (461.793 µs) : 441, 483
.   : milestone, 462,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 382.209 µs [362.163 µs, 402.255 µs] -
iast 512.257 µs [490.096 µs, 534.418 µs] 130.048 µs (34.0%)
iast_FULL 728.815 µs [706.743 µs, 750.887 µs] 346.606 µs (90.7%)
iast_GLOBAL 552.886 µs [530.997 µs, 574.775 µs] 170.677 µs (44.7%)
iast_HARDCODED_SECRET_DISABLED 512.166 µs [490.217 µs, 534.115 µs] 129.956 µs (34.0%)
iast_INACTIVE 458.394 µs [437.672 µs, 479.117 µs] 76.185 µs (19.9%)
iast_TELEMETRY_OFF 494.238 µs [471.789 µs, 516.688 µs] 112.029 µs (29.3%)
tracing 460.098 µs [438.818 µs, 481.378 µs] 77.889 µs (20.4%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 384.529 µs [364.53 µs, 404.528 µs] -
iast 512.229 µs [490.088 µs, 534.37 µs] 127.7 µs (33.2%)
iast_FULL 729.069 µs [707.148 µs, 750.99 µs] 344.54 µs (89.6%)
iast_GLOBAL 551.716 µs [530.003 µs, 573.43 µs] 167.187 µs (43.5%)
iast_HARDCODED_SECRET_DISABLED 516.784 µs [494.426 µs, 539.142 µs] 132.255 µs (34.4%)
iast_INACTIVE 458.071 µs [437.121 µs, 479.02 µs] 73.542 µs (19.1%)
iast_TELEMETRY_OFF 497.255 µs [475.8 µs, 518.71 µs] 112.726 µs (29.3%)
tracing 461.793 µs [440.785 µs, 482.801 µs] 77.264 µs (20.1%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.355 ms) : 1335, 1376
.   : milestone, 1355,
appsec (1.733 ms) : 1710, 1757
.   : milestone, 1733,
appsec_no_iast (1.746 ms) : 1720, 1771
.   : milestone, 1746,
code_origins (1.69 ms) : 1658, 1723
.   : milestone, 1690,
iast (1.5 ms) : 1476, 1525
.   : milestone, 1500,
profiling (1.496 ms) : 1472, 1520
.   : milestone, 1496,
tracing (1.508 ms) : 1483, 1533
.   : milestone, 1508,
section candidate
no_agent (1.34 ms) : 1320, 1360
.   : milestone, 1340,
appsec (1.731 ms) : 1708, 1755
.   : milestone, 1731,
appsec_no_iast (1.742 ms) : 1716, 1767
.   : milestone, 1742,
code_origins (1.673 ms) : 1640, 1707
.   : milestone, 1673,
iast (1.514 ms) : 1490, 1538
.   : milestone, 1514,
profiling (1.505 ms) : 1481, 1529
.   : milestone, 1505,
tracing (1.486 ms) : 1461, 1512
.   : milestone, 1486,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.355 ms [1.335 ms, 1.376 ms] -
appsec 1.733 ms [1.71 ms, 1.757 ms] 378.007 µs (27.9%)
appsec_no_iast 1.746 ms [1.72 ms, 1.771 ms] 390.229 µs (28.8%)
code_origins 1.69 ms [1.658 ms, 1.723 ms] 335.17 µs (24.7%)
iast 1.5 ms [1.476 ms, 1.525 ms] 144.872 µs (10.7%)
profiling 1.496 ms [1.472 ms, 1.52 ms] 140.652 µs (10.4%)
tracing 1.508 ms [1.483 ms, 1.533 ms] 152.653 µs (11.3%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.34 ms [1.32 ms, 1.36 ms] -
appsec 1.731 ms [1.708 ms, 1.755 ms] 391.395 µs (29.2%)
appsec_no_iast 1.742 ms [1.716 ms, 1.767 ms] 401.767 µs (30.0%)
code_origins 1.673 ms [1.64 ms, 1.707 ms] 333.643 µs (24.9%)
iast 1.514 ms [1.49 ms, 1.538 ms] 173.92 µs (13.0%)
profiling 1.505 ms [1.481 ms, 1.529 ms] 165.261 µs (12.3%)
tracing 1.486 ms [1.461 ms, 1.512 ms] 146.68 µs (10.9%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master andrea.marziali/jsr356
git_commit_date 1741601078 1741602010
git_commit_sha 01d3277 978afb6
release_version 1.48.0-SNAPSHOT~01d3277601 1.48.0-SNAPSHOT~978afb6bc8
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1741604120 1741604120
ci_job_id 839711792 839711792
ci_pipeline_id 58248718 58248718
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zhk6exes-project-304-concurrent-2-0hiicjuf 6.8.0-1023-aws #25~22.04.1-Ubuntu SMP Tue Jan 28 12:51:22 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zhk6exes-project-304-concurrent-2-0hiicjuf 6.8.0-1023-aws #25~22.04.1-Ubuntu SMP Tue Jan 28 12:51:22 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 12 metrics, 0 unstable metrics.

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.478 ms) : 1466, 1489
.   : milestone, 1478,
appsec (2.355 ms) : 2311, 2399
.   : milestone, 2355,
iast (2.126 ms) : 2070, 2182
.   : milestone, 2126,
iast_GLOBAL (2.167 ms) : 2111, 2223
.   : milestone, 2167,
profiling (1.98 ms) : 1937, 2024
.   : milestone, 1980,
tracing (1.953 ms) : 1911, 1996
.   : milestone, 1953,
section candidate
no_agent (1.476 ms) : 1465, 1488
.   : milestone, 1476,
appsec (2.354 ms) : 2310, 2398
.   : milestone, 2354,
iast (2.128 ms) : 2071, 2184
.   : milestone, 2128,
iast_GLOBAL (2.169 ms) : 2113, 2225
.   : milestone, 2169,
profiling (1.989 ms) : 1944, 2035
.   : milestone, 1989,
tracing (1.954 ms) : 1911, 1996
.   : milestone, 1954,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.478 ms [1.466 ms, 1.489 ms] -
appsec 2.355 ms [2.311 ms, 2.399 ms] 877.049 µs (59.4%)
iast 2.126 ms [2.07 ms, 2.182 ms] 648.425 µs (43.9%)
iast_GLOBAL 2.167 ms [2.111 ms, 2.223 ms] 689.173 µs (46.6%)
profiling 1.98 ms [1.937 ms, 2.024 ms] 502.897 µs (34.0%)
tracing 1.953 ms [1.911 ms, 1.996 ms] 475.777 µs (32.2%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.476 ms [1.465 ms, 1.488 ms] -
appsec 2.354 ms [2.31 ms, 2.398 ms] 877.23 µs (59.4%)
iast 2.128 ms [2.071 ms, 2.184 ms] 651.23 µs (44.1%)
iast_GLOBAL 2.169 ms [2.113 ms, 2.225 ms] 692.761 µs (46.9%)
profiling 1.989 ms [1.944 ms, 2.035 ms] 513.168 µs (34.8%)
tracing 1.954 ms [1.911 ms, 1.996 ms] 477.293 µs (32.3%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601
    dateFormat X
    axisFormat %s
section baseline
no_agent (14.883 s) : 14883000, 14883000
.   : milestone, 14883000,
appsec (14.939 s) : 14939000, 14939000
.   : milestone, 14939000,
iast (18.908 s) : 18908000, 18908000
.   : milestone, 18908000,
iast_GLOBAL (18.104 s) : 18104000, 18104000
.   : milestone, 18104000,
profiling (15.626 s) : 15626000, 15626000
.   : milestone, 15626000,
tracing (15.004 s) : 15004000, 15004000
.   : milestone, 15004000,
section candidate
no_agent (14.893 s) : 14893000, 14893000
.   : milestone, 14893000,
appsec (15.027 s) : 15027000, 15027000
.   : milestone, 15027000,
iast (18.564 s) : 18564000, 18564000
.   : milestone, 18564000,
iast_GLOBAL (18.04 s) : 18040000, 18040000
.   : milestone, 18040000,
profiling (15.011 s) : 15011000, 15011000
.   : milestone, 15011000,
tracing (15.115 s) : 15115000, 15115000
.   : milestone, 15115000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.883 s [14.883 s, 14.883 s] -
appsec 14.939 s [14.939 s, 14.939 s] 56.0 ms (0.4%)
iast 18.908 s [18.908 s, 18.908 s] 4.025 s (27.0%)
iast_GLOBAL 18.104 s [18.104 s, 18.104 s] 3.221 s (21.6%)
profiling 15.626 s [15.626 s, 15.626 s] 743.0 ms (5.0%)
tracing 15.004 s [15.004 s, 15.004 s] 121.0 ms (0.8%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.893 s [14.893 s, 14.893 s] -
appsec 15.027 s [15.027 s, 15.027 s] 134.0 ms (0.9%)
iast 18.564 s [18.564 s, 18.564 s] 3.671 s (24.6%)
iast_GLOBAL 18.04 s [18.04 s, 18.04 s] 3.147 s (21.1%)
profiling 15.011 s [15.011 s, 15.011 s] 118.0 ms (0.8%)
tracing 15.115 s [15.115 s, 15.115 s] 222.0 ms (1.5%)

@amarziali amarziali force-pushed the andrea.marziali/jsr356 branch 4 times, most recently from b017c7b to 52d9691 Compare March 3, 2025 13:38
@amarziali amarziali marked this pull request as ready for review March 3, 2025 13:39
@amarziali amarziali requested review from a team as code owners March 3, 2025 13:39
@amarziali amarziali requested a review from ygree March 3, 2025 13:39
Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

There are a lot of changes in this PR 😅
I will have a closer look the public and internal API later this week.

@amarziali amarziali force-pushed the andrea.marziali/jsr356 branch from 542304a to ab80d28 Compare March 4, 2025 09:34
Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

Reviewed the API part and left some comments :)
Let me know if you need help with the OTel part.

private final Set<AgentSpanLink> assertedLinks = []

private LinksAssert(DDSpan span) {
this.links = span.links // this is class protected but for the moment groovy can access it
Copy link
Contributor

Choose a reason for hiding this comment

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

Can it be left private? Can’t groovy access them when private too?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

let me check it.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Now I remember why. It does not work: (see that CI run)

It fails for

Caused by: groovy.lang.MissingPropertyException: No such property: links for class: datadog.trace.core.DDSpan$SpockMock$863262640

because that span it's got spied and then cannot be accessed if private. Any advice for it?

Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe just leave it as a comment with this reason.

@@ -107,7 +107,7 @@ static DDSpan create(
*/
private volatile int longRunningVersion = 0;

private final List<AgentSpanLink> links;
protected final List<AgentSpanLink> links;
Copy link
Contributor

Choose a reason for hiding this comment

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

Can it stay private? -- see related comment in SpanLinkTest

@@ -311,6 +311,7 @@ class OpenTelemetry14Test extends AgentTestRunner {
assertTraces(1) {
trace(1) {
span {
ignoreSpanLinks() // check is done on the content of the tag below
Copy link
Contributor

Choose a reason for hiding this comment

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

Do you need some help porting those checks?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Thanks for proposing I don't refuse it :) I did this way mostly because here we wanted to check the serialized form so I just decided to skip them. Would you like to add the links part on this test?

assert span.tags.containsKey(DDTags.SPAN_LINKS)
assert span.tags[DDTags.SPAN_LINKS] != null
links({
link(DDTraceId.from((long)12052652441736835200), (long)-6394091631972716416)
Copy link
Contributor

Choose a reason for hiding this comment

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

Magic numbers?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I don't know where they come from 🤷 That trace ID is hardcoded somwhere so I had to hardcode it as well

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.

Congratulations on putting it all together! That's a big one! Great to see a lot of tests as well. Overall looks solid. I left a few notes for clarification.

@amarziali amarziali force-pushed the andrea.marziali/jsr356 branch 2 times, most recently from cbd26e7 to 99e400b Compare March 5, 2025 09:55
@amarziali amarziali requested a review from ygree March 5, 2025 09:58
@amarziali amarziali force-pushed the andrea.marziali/jsr356 branch 2 times, most recently from a947aef to 700b1c3 Compare March 5, 2025 16:21
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 to me!

return s;
}
final CharSequence ret = s.subSequence(idx + 1, s.length());
if (ret.length() == 0) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Can this case happen if idx == s.length() - 1 is already filtered above?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

yep right I can simplify

import jakarta.websocket.server.ServerEndpointConfig
import java.nio.ByteBuffer

class WebsocketTest extends AgentTestRunner {
Copy link
Contributor

Choose a reason for hiding this comment

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

Thanks for excluding random data from test case name! 🙇

Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

Looking good from the platform / api side! 🙌

@amarziali amarziali force-pushed the andrea.marziali/jsr356 branch from 700b1c3 to 978afb6 Compare March 10, 2025 10:20
@amarziali amarziali enabled auto-merge (squash) March 10, 2025 10:21
@amarziali amarziali merged commit a464b9b into master Mar 10, 2025
215 of 218 checks passed
@amarziali amarziali deleted the andrea.marziali/jsr356 branch March 10, 2025 11:01
@github-actions github-actions bot added this to the 1.48.0 milestone Mar 10, 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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants