Skip to content

Protocol v1#10801

Open
AlexeyKuznetsov-DD wants to merge 71 commits intomasterfrom
alexeyk/protocol-v1-1
Open

Protocol v1#10801
AlexeyKuznetsov-DD wants to merge 71 commits intomasterfrom
alexeyk/protocol-v1-1

Conversation

@AlexeyKuznetsov-DD
Copy link
Copy Markdown
Contributor

What Does This Do

Java implementation for protocol v1.

Motivation

Additional Notes

DO NOT MERGE, WIP.

@AlexeyKuznetsov-DD AlexeyKuznetsov-DD self-assigned this Mar 10, 2026
@AlexeyKuznetsov-DD AlexeyKuznetsov-DD added tag: do not merge Do not merge changes comp: core Tracer core labels Mar 10, 2026
@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Mar 11, 2026

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master alexeyk/protocol-v1-1
git_commit_date 1776271977 1776283277
git_commit_sha 071ce9d 9a502fa
release_version 1.62.0-SNAPSHOT~071ce9dae5 1.61.0-SNAPSHOT~9a502fa3cf
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1776285154 1776285154
ci_job_id 1599316914 1599316914
ci_pipeline_id 107893112 107893112
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-10eh5fma 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-10eh5fma 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None

Summary

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

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.61.0-SNAPSHOT~9a502fa3cf, baseline=1.62.0-SNAPSHOT~071ce9dae5

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.062 s) : 0, 1061998
Total [baseline] (8.822 s) : 0, 8822477
Agent [candidate] (1.066 s) : 0, 1066241
Total [candidate] (8.858 s) : 0, 8857619
section iast
Agent [baseline] (1.227 s) : 0, 1226887
Total [baseline] (9.569 s) : 0, 9569045
Agent [candidate] (1.225 s) : 0, 1224735
Total [candidate] (9.581 s) : 0, 9580587
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.062 s -
Agent iast 1.227 s 164.889 ms (15.5%)
Total tracing 8.822 s -
Total iast 9.569 s 746.568 ms (8.5%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.066 s -
Agent iast 1.225 s 158.494 ms (14.9%)
Total tracing 8.858 s -
Total iast 9.581 s 722.968 ms (8.2%)
gantt
    title insecure-bank - break down per module: candidate=1.61.0-SNAPSHOT~9a502fa3cf, baseline=1.62.0-SNAPSHOT~071ce9dae5

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.259 ms) : 0, 1259
crashtracking [candidate] (1.243 ms) : 0, 1243
BytebuddyAgent [baseline] (636.391 ms) : 0, 636391
BytebuddyAgent [candidate] (638.652 ms) : 0, 638652
AgentMeter [baseline] (29.646 ms) : 0, 29646
AgentMeter [candidate] (29.561 ms) : 0, 29561
GlobalTracer [baseline] (249.141 ms) : 0, 249141
GlobalTracer [candidate] (250.286 ms) : 0, 250286
AppSec [baseline] (32.418 ms) : 0, 32418
AppSec [candidate] (32.443 ms) : 0, 32443
Debugger [baseline] (59.274 ms) : 0, 59274
Debugger [candidate] (59.514 ms) : 0, 59514
Remote Config [baseline] (589.809 µs) : 0, 590
Remote Config [candidate] (597.107 µs) : 0, 597
Telemetry [baseline] (8.03 ms) : 0, 8030
Telemetry [candidate] (8.28 ms) : 0, 8280
Flare Poller [baseline] (9.03 ms) : 0, 9030
Flare Poller [candidate] (9.097 ms) : 0, 9097
section iast
crashtracking [baseline] (1.247 ms) : 0, 1247
crashtracking [candidate] (1.231 ms) : 0, 1231
BytebuddyAgent [baseline] (804.054 ms) : 0, 804054
BytebuddyAgent [candidate] (800.6 ms) : 0, 800600
AgentMeter [baseline] (11.352 ms) : 0, 11352
AgentMeter [candidate] (11.419 ms) : 0, 11419
GlobalTracer [baseline] (239.449 ms) : 0, 239449
GlobalTracer [candidate] (239.451 ms) : 0, 239451
AppSec [baseline] (31.217 ms) : 0, 31217
AppSec [candidate] (32.392 ms) : 0, 32392
Debugger [baseline] (62.237 ms) : 0, 62237
Debugger [candidate] (62.181 ms) : 0, 62181
Remote Config [baseline] (548.03 µs) : 0, 548
Remote Config [candidate] (2.33 ms) : 0, 2330
Telemetry [baseline] (11.132 ms) : 0, 11132
Telemetry [candidate] (9.478 ms) : 0, 9478
Flare Poller [baseline] (3.463 ms) : 0, 3463
Flare Poller [candidate] (3.483 ms) : 0, 3483
IAST [baseline] (25.738 ms) : 0, 25738
IAST [candidate] (25.875 ms) : 0, 25875
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.61.0-SNAPSHOT~9a502fa3cf, baseline=1.62.0-SNAPSHOT~071ce9dae5

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.069 s) : 0, 1069263
Total [baseline] (11.151 s) : 0, 11150708
Agent [candidate] (1.059 s) : 0, 1058570
Total [candidate] (11.072 s) : 0, 11072498
section appsec
Agent [baseline] (1.266 s) : 0, 1266430
Total [baseline] (11.144 s) : 0, 11144127
Agent [candidate] (1.261 s) : 0, 1260941
Total [candidate] (11.129 s) : 0, 11128807
section iast
Agent [baseline] (1.228 s) : 0, 1227564
Total [baseline] (11.324 s) : 0, 11324218
Agent [candidate] (1.224 s) : 0, 1224276
Total [candidate] (11.306 s) : 0, 11306321
section profiling
Agent [baseline] (1.188 s) : 0, 1188111
Total [baseline] (11.091 s) : 0, 11091186
Agent [candidate] (1.193 s) : 0, 1192910
Total [candidate] (11.183 s) : 0, 11182855
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.069 s -
Agent appsec 1.266 s 197.167 ms (18.4%)
Agent iast 1.228 s 158.301 ms (14.8%)
Agent profiling 1.188 s 118.849 ms (11.1%)
Total tracing 11.151 s -
Total appsec 11.144 s -6.58 ms (-0.1%)
Total iast 11.324 s 173.51 ms (1.6%)
Total profiling 11.091 s -59.522 ms (-0.5%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.059 s -
Agent appsec 1.261 s 202.371 ms (19.1%)
Agent iast 1.224 s 165.706 ms (15.7%)
Agent profiling 1.193 s 134.34 ms (12.7%)
Total tracing 11.072 s -
Total appsec 11.129 s 56.309 ms (0.5%)
Total iast 11.306 s 233.824 ms (2.1%)
Total profiling 11.183 s 110.357 ms (1.0%)
gantt
    title petclinic - break down per module: candidate=1.61.0-SNAPSHOT~9a502fa3cf, baseline=1.62.0-SNAPSHOT~071ce9dae5

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.274 ms) : 0, 1274
crashtracking [candidate] (1.229 ms) : 0, 1229
BytebuddyAgent [baseline] (640.111 ms) : 0, 640111
BytebuddyAgent [candidate] (632.925 ms) : 0, 632925
AgentMeter [baseline] (29.728 ms) : 0, 29728
AgentMeter [candidate] (29.197 ms) : 0, 29197
GlobalTracer [baseline] (250.859 ms) : 0, 250859
GlobalTracer [candidate] (248.77 ms) : 0, 248770
AppSec [baseline] (32.649 ms) : 0, 32649
AppSec [candidate] (32.161 ms) : 0, 32161
Debugger [baseline] (60.281 ms) : 0, 60281
Debugger [candidate] (59.804 ms) : 0, 59804
Remote Config [baseline] (605.418 µs) : 0, 605
Remote Config [candidate] (603.331 µs) : 0, 603
Telemetry [baseline] (8.17 ms) : 0, 8170
Telemetry [candidate] (8.313 ms) : 0, 8313
Flare Poller [baseline] (8.977 ms) : 0, 8977
Flare Poller [candidate] (9.243 ms) : 0, 9243
section appsec
crashtracking [baseline] (1.246 ms) : 0, 1246
crashtracking [candidate] (1.231 ms) : 0, 1231
BytebuddyAgent [baseline] (671.753 ms) : 0, 671753
BytebuddyAgent [candidate] (668.405 ms) : 0, 668405
AgentMeter [baseline] (12.245 ms) : 0, 12245
AgentMeter [candidate] (12.204 ms) : 0, 12204
GlobalTracer [baseline] (252.694 ms) : 0, 252694
GlobalTracer [candidate] (251.678 ms) : 0, 251678
IAST [baseline] (24.891 ms) : 0, 24891
IAST [candidate] (24.926 ms) : 0, 24926
AppSec [baseline] (187.597 ms) : 0, 187597
AppSec [candidate] (186.713 ms) : 0, 186713
Debugger [baseline] (66.56 ms) : 0, 66560
Debugger [candidate] (66.593 ms) : 0, 66593
Remote Config [baseline] (628.875 µs) : 0, 629
Remote Config [candidate] (603.099 µs) : 0, 603
Telemetry [baseline] (8.475 ms) : 0, 8475
Telemetry [candidate] (8.451 ms) : 0, 8451
Flare Poller [baseline] (3.569 ms) : 0, 3569
Flare Poller [candidate] (3.599 ms) : 0, 3599
section iast
crashtracking [baseline] (1.234 ms) : 0, 1234
crashtracking [candidate] (1.217 ms) : 0, 1217
BytebuddyAgent [baseline] (803.44 ms) : 0, 803440
BytebuddyAgent [candidate] (800.583 ms) : 0, 800583
AgentMeter [baseline] (11.44 ms) : 0, 11440
AgentMeter [candidate] (11.401 ms) : 0, 11401
GlobalTracer [baseline] (240.107 ms) : 0, 240107
GlobalTracer [candidate] (239.593 ms) : 0, 239593
IAST [baseline] (25.89 ms) : 0, 25890
IAST [candidate] (25.68 ms) : 0, 25680
AppSec [baseline] (31.978 ms) : 0, 31978
AppSec [candidate] (33.604 ms) : 0, 33604
Debugger [baseline] (62.722 ms) : 0, 62722
Debugger [candidate] (61.313 ms) : 0, 61313
Remote Config [baseline] (549.812 µs) : 0, 550
Remote Config [candidate] (1.114 ms) : 0, 1114
Telemetry [baseline] (10.545 ms) : 0, 10545
Telemetry [candidate] (9.895 ms) : 0, 9895
Flare Poller [baseline] (3.424 ms) : 0, 3424
Flare Poller [candidate] (3.529 ms) : 0, 3529
section profiling
crashtracking [baseline] (1.196 ms) : 0, 1196
crashtracking [candidate] (1.192 ms) : 0, 1192
BytebuddyAgent [baseline] (693.433 ms) : 0, 693433
BytebuddyAgent [candidate] (697.206 ms) : 0, 697206
AgentMeter [baseline] (9.178 ms) : 0, 9178
AgentMeter [candidate] (9.201 ms) : 0, 9201
GlobalTracer [baseline] (207.82 ms) : 0, 207820
GlobalTracer [candidate] (208.681 ms) : 0, 208681
AppSec [baseline] (32.887 ms) : 0, 32887
AppSec [candidate] (32.855 ms) : 0, 32855
Debugger [baseline] (66.24 ms) : 0, 66240
Debugger [candidate] (65.748 ms) : 0, 65748
Remote Config [baseline] (591.414 µs) : 0, 591
Remote Config [candidate] (570.678 µs) : 0, 571
Telemetry [baseline] (7.847 ms) : 0, 7847
Telemetry [candidate] (7.898 ms) : 0, 7898
Flare Poller [baseline] (3.591 ms) : 0, 3591
Flare Poller [candidate] (3.544 ms) : 0, 3544
ProfilingAgent [baseline] (93.849 ms) : 0, 93849
ProfilingAgent [candidate] (94.123 ms) : 0, 94123
Profiling [baseline] (94.412 ms) : 0, 94412
Profiling [candidate] (94.704 ms) : 0, 94704
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master alexeyk/protocol-v1-1
git_commit_date 1776271977 1776283277
git_commit_sha 071ce9d 9a502fa
release_version 1.62.0-SNAPSHOT~071ce9dae5 1.61.0-SNAPSHOT~9a502fa3cf
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1776285626 1776285626
ci_job_id 1599316920 1599316920
ci_pipeline_id 107893112 107893112
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-fksdydt6 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-fksdydt6 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

Found 5 performance improvements and 1 performance regressions! Performance is the same for 14 metrics, 16 unstable metrics.

scenario Δ mean agg_http_req_duration_p50 Δ mean agg_http_req_duration_p95 Δ mean throughput candidate mean agg_http_req_duration_p50 candidate mean agg_http_req_duration_p95 candidate mean throughput baseline mean agg_http_req_duration_p50 baseline mean agg_http_req_duration_p95 baseline mean throughput
scenario:load:petclinic:iast:high_load better
[-1.752ms; -0.415ms] or [-9.415%; -2.229%]
better
[-3.305ms; -0.631ms] or [-10.922%; -2.086%]
unstable
[-19.368op/s; +43.431op/s] or [-7.872%; +17.652%]
17.525ms 28.288ms 258.062op/s 18.609ms 30.256ms 246.031op/s
scenario:load:petclinic:no_agent:high_load worse
[+0.430ms; +2.061ms] or [+2.396%; +11.496%]
unstable
[-0.547ms; +2.773ms] or [-1.837%; +9.309%]
unstable
[-34.363op/s; +21.904op/s] or [-13.536%; +8.628%]
19.172ms 30.897ms 247.645op/s 17.927ms 29.784ms 253.875op/s
scenario:load:petclinic:tracing:high_load better
[-2.109ms; -0.981ms] or [-11.100%; -5.162%]
better
[-2.409ms; -0.910ms] or [-7.926%; -2.994%]
unstable
[-0.370op/s; +53.876op/s] or [-0.152%; +22.140%]
17.459ms 28.735ms 270.097op/s 19.004ms 30.394ms 243.344op/s
scenario:load:petclinic:profiling:high_load better
[-1.830ms; -0.688ms] or [-9.403%; -3.537%]
unsure
[-2.999ms; -0.409ms] or [-9.732%; -1.327%]
unstable
[-16.442op/s; +45.130op/s] or [-6.898%; +18.932%]
18.203ms 29.110ms 252.719op/s 19.462ms 30.814ms 238.375op/s
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.61.0-SNAPSHOT~9a502fa3cf, baseline=1.62.0-SNAPSHOT~071ce9dae5
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.251 ms) : 1239, 1263
.   : milestone, 1251,
iast (3.261 ms) : 3217, 3305
.   : milestone, 3261,
iast_FULL (5.974 ms) : 5914, 6035
.   : milestone, 5974,
iast_GLOBAL (3.815 ms) : 3761, 3869
.   : milestone, 3815,
profiling (2.174 ms) : 2154, 2193
.   : milestone, 2174,
tracing (1.988 ms) : 1971, 2005
.   : milestone, 1988,
section candidate
no_agent (1.239 ms) : 1227, 1251
.   : milestone, 1239,
iast (3.253 ms) : 3208, 3297
.   : milestone, 3253,
iast_FULL (6.063 ms) : 6001, 6124
.   : milestone, 6063,
iast_GLOBAL (3.725 ms) : 3664, 3786
.   : milestone, 3725,
profiling (2.303 ms) : 2280, 2326
.   : milestone, 2303,
tracing (1.875 ms) : 1860, 1891
.   : milestone, 1875,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.251 ms [1.239 ms, 1.263 ms] -
iast 3.261 ms [3.217 ms, 3.305 ms] 2.01 ms (160.7%)
iast_FULL 5.974 ms [5.914 ms, 6.035 ms] 4.724 ms (377.7%)
iast_GLOBAL 3.815 ms [3.761 ms, 3.869 ms] 2.564 ms (205.0%)
profiling 2.174 ms [2.154 ms, 2.193 ms] 922.886 µs (73.8%)
tracing 1.988 ms [1.971 ms, 2.005 ms] 737.367 µs (59.0%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 1.239 ms [1.227 ms, 1.251 ms] -
iast 3.253 ms [3.208 ms, 3.297 ms] 2.014 ms (162.5%)
iast_FULL 6.063 ms [6.001 ms, 6.124 ms] 4.824 ms (389.3%)
iast_GLOBAL 3.725 ms [3.664 ms, 3.786 ms] 2.486 ms (200.7%)
profiling 2.303 ms [2.28 ms, 2.326 ms] 1.064 ms (85.9%)
tracing 1.875 ms [1.86 ms, 1.891 ms] 636.231 µs (51.4%)
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.61.0-SNAPSHOT~9a502fa3cf, baseline=1.62.0-SNAPSHOT~071ce9dae5
    dateFormat X
    axisFormat %s
section baseline
no_agent (18.379 ms) : 18190, 18568
.   : milestone, 18379,
appsec (18.741 ms) : 18555, 18927
.   : milestone, 18741,
code_origins (18.106 ms) : 17929, 18282
.   : milestone, 18106,
iast (18.969 ms) : 18776, 19163
.   : milestone, 18969,
profiling (19.587 ms) : 19387, 19786
.   : milestone, 19587,
tracing (19.18 ms) : 18985, 19376
.   : milestone, 19180,
section candidate
no_agent (19.453 ms) : 19255, 19651
.   : milestone, 19453,
appsec (18.898 ms) : 18707, 19090
.   : milestone, 18898,
code_origins (18.119 ms) : 17937, 18300
.   : milestone, 18119,
iast (18.081 ms) : 17904, 18259
.   : milestone, 18081,
profiling (18.467 ms) : 18284, 18649
.   : milestone, 18467,
tracing (17.83 ms) : 17654, 18006
.   : milestone, 17830,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 18.379 ms [18.19 ms, 18.568 ms] -
appsec 18.741 ms [18.555 ms, 18.927 ms] 361.52 µs (2.0%)
code_origins 18.106 ms [17.929 ms, 18.282 ms] -273.538 µs (-1.5%)
iast 18.969 ms [18.776 ms, 19.163 ms] 590.215 µs (3.2%)
profiling 19.587 ms [19.387 ms, 19.786 ms] 1.208 ms (6.6%)
tracing 19.18 ms [18.985 ms, 19.376 ms] 801.129 µs (4.4%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 19.453 ms [19.255 ms, 19.651 ms] -
appsec 18.898 ms [18.707 ms, 19.09 ms] -554.601 µs (-2.9%)
code_origins 18.119 ms [17.937 ms, 18.3 ms] -1.334 ms (-6.9%)
iast 18.081 ms [17.904 ms, 18.259 ms] -1.372 ms (-7.1%)
profiling 18.467 ms [18.284 ms, 18.649 ms] -986.566 µs (-5.1%)
tracing 17.83 ms [17.654 ms, 18.006 ms] -1.623 ms (-8.3%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master alexeyk/protocol-v1-1
git_commit_date 1776271977 1776283277
git_commit_sha 071ce9d 9a502fa
release_version 1.62.0-SNAPSHOT~071ce9dae5 1.61.0-SNAPSHOT~9a502fa3cf
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1776285385 1776285385
ci_job_id 1599316923 1599316923
ci_pipeline_id 107893112 107893112
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-zfyrx7zua-project-304-concurrent-0-nxuptjo2 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-zfyrx7zua-project-304-concurrent-0-nxuptjo2 6.8.0-1031-aws #33~22.04.1-Ubuntu SMP Thu Jun 26 14:22:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

Summary

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

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.61.0-SNAPSHOT~9a502fa3cf, baseline=1.62.0-SNAPSHOT~071ce9dae5
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.497 ms) : 1485, 1509
.   : milestone, 1497,
appsec (2.557 ms) : 2501, 2612
.   : milestone, 2557,
iast (2.279 ms) : 2210, 2348
.   : milestone, 2279,
iast_GLOBAL (2.33 ms) : 2260, 2400
.   : milestone, 2330,
profiling (2.522 ms) : 2310, 2733
.   : milestone, 2522,
tracing (2.086 ms) : 2033, 2140
.   : milestone, 2086,
section candidate
no_agent (1.495 ms) : 1483, 1506
.   : milestone, 1495,
appsec (2.534 ms) : 2479, 2588
.   : milestone, 2534,
iast (2.28 ms) : 2211, 2350
.   : milestone, 2280,
iast_GLOBAL (2.324 ms) : 2255, 2394
.   : milestone, 2324,
profiling (2.116 ms) : 2061, 2172
.   : milestone, 2116,
tracing (2.097 ms) : 2044, 2151
.   : milestone, 2097,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.497 ms [1.485 ms, 1.509 ms] -
appsec 2.557 ms [2.501 ms, 2.612 ms] 1.06 ms (70.8%)
iast 2.279 ms [2.21 ms, 2.348 ms] 782.056 µs (52.2%)
iast_GLOBAL 2.33 ms [2.26 ms, 2.4 ms] 832.801 µs (55.6%)
profiling 2.522 ms [2.31 ms, 2.733 ms] 1.025 ms (68.5%)
tracing 2.086 ms [2.033 ms, 2.14 ms] 589.583 µs (39.4%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.495 ms [1.483 ms, 1.506 ms] -
appsec 2.534 ms [2.479 ms, 2.588 ms] 1.039 ms (69.5%)
iast 2.28 ms [2.211 ms, 2.35 ms] 785.822 µs (52.6%)
iast_GLOBAL 2.324 ms [2.255 ms, 2.394 ms] 829.633 µs (55.5%)
profiling 2.116 ms [2.061 ms, 2.172 ms] 621.849 µs (41.6%)
tracing 2.097 ms [2.044 ms, 2.151 ms] 602.721 µs (40.3%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.61.0-SNAPSHOT~9a502fa3cf, baseline=1.62.0-SNAPSHOT~071ce9dae5
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.015 s) : 15015000, 15015000
.   : milestone, 15015000,
appsec (14.516 s) : 14516000, 14516000
.   : milestone, 14516000,
iast (18.627 s) : 18627000, 18627000
.   : milestone, 18627000,
iast_GLOBAL (17.989 s) : 17989000, 17989000
.   : milestone, 17989000,
profiling (15.448 s) : 15448000, 15448000
.   : milestone, 15448000,
tracing (14.795 s) : 14795000, 14795000
.   : milestone, 14795000,
section candidate
no_agent (15.082 s) : 15082000, 15082000
.   : milestone, 15082000,
appsec (14.882 s) : 14882000, 14882000
.   : milestone, 14882000,
iast (18.433 s) : 18433000, 18433000
.   : milestone, 18433000,
iast_GLOBAL (18.187 s) : 18187000, 18187000
.   : milestone, 18187000,
profiling (14.974 s) : 14974000, 14974000
.   : milestone, 14974000,
tracing (14.937 s) : 14937000, 14937000
.   : milestone, 14937000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.015 s [15.015 s, 15.015 s] -
appsec 14.516 s [14.516 s, 14.516 s] -499.0 ms (-3.3%)
iast 18.627 s [18.627 s, 18.627 s] 3.612 s (24.1%)
iast_GLOBAL 17.989 s [17.989 s, 17.989 s] 2.974 s (19.8%)
profiling 15.448 s [15.448 s, 15.448 s] 433.0 ms (2.9%)
tracing 14.795 s [14.795 s, 14.795 s] -220.0 ms (-1.5%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.082 s [15.082 s, 15.082 s] -
appsec 14.882 s [14.882 s, 14.882 s] -200.0 ms (-1.3%)
iast 18.433 s [18.433 s, 18.433 s] 3.351 s (22.2%)
iast_GLOBAL 18.187 s [18.187 s, 18.187 s] 3.105 s (20.6%)
profiling 14.974 s [14.974 s, 14.974 s] -108.0 ms (-0.7%)
tracing 14.937 s [14.937 s, 14.937 s] -145.0 ms (-1.0%)

@AlexeyKuznetsov-DD AlexeyKuznetsov-DD marked this pull request as ready for review March 31, 2026 16:44
@AlexeyKuznetsov-DD AlexeyKuznetsov-DD requested review from a team as code owners March 31, 2026 16:44
# Conflicts:
#	dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java
#	dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java
@github-actions
Copy link
Copy Markdown
Contributor

Hi! 👋 Thanks for your pull request! 🎉

To help us review it, please make sure to:

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

If you need help, please check our contributing guidelines.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 31, 2026

⚠️ New Groovy Test Files Added

The following files add Groovy tests to modules that are candidates for migration to Java / JUnit 5:

  • dd-trace-core/src/test/groovy/datadog/trace/common/writer/ddagent/TraceMapperV1PayloadTest.groovy (module: dd-trace-core)

Consider writing these tests in Java / JUnit 5 instead to help with the ongoing migration effort.

@AlexeyKuznetsov-DD AlexeyKuznetsov-DD added the type: enhancement Enhancements and improvements label Mar 31, 2026
@dougqh
Copy link
Copy Markdown
Contributor

dougqh commented Apr 13, 2026

Besides just reviewing the code, I wanted to see how this change impacts our overhead.
Overall, the results are quite good...

  • throughput is mostly unchanged -- maybe slightly better in intermediate heap sizes
  • allocation is up, but only slightly -- this looks be from UTF-8 byte[] which can be solved with a bit of caching

I suspect throughput will improve once this branch is synchronized with master.
And we can easily add the caching later, since this protocol uses a de-duplicated string table, the increase is only 1%.

The cache will just help a little more by de-duplicating across payloads.

@AlexeyKuznetsov-DD
Copy link
Copy Markdown
Contributor Author

Besides just reviewing the code, I wanted to see how this change impacts our overhead. Overall, the results are quite good...

  • throughput is mostly unchanged -- maybe slightly better in intermediate heap sizes
  • allocation is up, but only slightly -- this looks be from UTF-8 byte[] which can be solved with a bit of caching

I suspect throughput will improve once this branch is synchronized with master. And we can easily add the caching later, since this protocol uses a de-duplicated string table, the increase is only 1%.

The cache will just help a little more by de-duplicating across payloads.

Yep, totally agree on caching, we can improve in follow up PRs.
PR is already too big, so I would prefer to merge it if there no obvious issues and continue to work in smaller PRs.
Thanks for feedback!

Copy link
Copy Markdown
Contributor

@dougqh dougqh left a comment

Choose a reason for hiding this comment

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

I have mostly left small comments that I've put throughout. Nothing critical in my view.
I do think getting one more review from someone familiar with the core would be good.

Comment thread dd-trace-api/src/main/java/datadog/trace/api/ProtocolVersion.java
if (DDTags.SPAN_EVENTS.equals(entry.tag())) {
continue;
}
writeFlattenedTagAttribute(writable, entry.tag(), entry.objectValue());
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'd like to try to avoid boxing primitives here.

I think making a variant of writeFlattenedTagAttribute that takes writable, entryReader might make sense.

Then we check if the TagMap.EntryReader is holding a primitive before calling objectValue.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Refactored.

static final int SPAN_KIND_CONSUMER = 5;

// Decision maker tag key
private static final String KEY_DECISION_MAKER = "_dd.p.dm";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We probably want to use Utf8BytesString for these. It caches the UTF8 representation, so we don't keep paying the encoding cost.

Admittedly, I didn't double check where KEY_DECISION_MAKER is used, so I'll let you make the final decision on that.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I double checked the code and I can see that KEY_DECISION_MAKER used for lookup only, so not sure how UTF8 can be applied here. I think the we can do one more round of optimizations for UTF8 cached values in follow up PRs, but probably v1 should be good as-is as it is maintaining string table with all unique strings already, that can be considered as a cache already.

writable.writeInt(fieldId);
writable.startArray(spansCount);

for (int i = 0; i < spansCount; i++) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Is the c-style for loop, so we can access the index?
As an alternative, we could use a ListIterator.

I've typically found Iterators to be better than c-style for loops, but I'll admit it can be situational. We probably just need to benchmark with v1 and see.

I can share my stress test if you like.

Comment thread dd-trace-core/src/main/java/datadog/trace/core/DDSpan.java Outdated
String linksTag = DDSpanLink.toTag(restrictedSpan.getLinks());
if (linksTag != null) {
unsafeTags.put(SPAN_LINKS, linksTag);
if (spanLinksAsTag) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It would be nice if we could find a nicer way to encapsulate the handling of span links.
Although for now, I think this is fine.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I wondering if the MetadataConsumer could indicate how it wants to receive the span links. Although, admittedly, I don't remember quite where the MetadataConsumer originates from.

longRunningVersion,
ProcessTags.getTagsForSerialization()));
ProcessTags.getTagsForSerialization(),
restrictedSpan.getLinks()));
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I see, so we have to pass span links through metadata now. That makes sense.

Since Metadata is more of the payload version of span, maybe we should push the handling of links down into it.

Comment thread dd-trace-core/src/main/java/datadog/trace/core/Metadata.java Outdated
int statusCode,
CharSequence origin) {
CharSequence origin,
List<AgentSpanLink> spanLinks = emptyList()) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The test code feels a little messy to me with both having an optional empty list and turning null into empty list below, but I understand updating these tests is tedious.


void processTagsAndBaggage(MetadataConsumer consumer);

/**
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

processTagsAndBaggage is a bit of internals that I'd prefer not to expose.
Nevermind, I guess we already exposed processTagsAndBaggage.

However, I'm a bit confused as to why we still need the old processTagsAndBaggage that just takes the MetadataConsumer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp: core Tracer core tag: do not merge Do not merge changes type: enhancement Enhancements and improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants