Skip to content

Add check to prevent injection of repeated GRPC headers #9246

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 7 commits into from
Jul 30, 2025

Conversation

mhlidd
Copy link
Contributor

@mhlidd mhlidd commented Jul 25, 2025

What Does This Do

Followup to #9171.
Instead of preventing multiple OT Baggage injection at the injector level, handle it at instrumentation level since this is a GRPC specific bug. We should prohibit all repeated keys and prioritize the first key that is injected.

Motivation

Additional Notes

Contributor Checklist

Jira ticket: APMS-16280

@mhlidd mhlidd added type: bug Bug report and fix inst: grpc gRPC instrumentation labels Jul 25, 2025
@pr-commenter
Copy link

pr-commenter bot commented Jul 25, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/fix_grpc_inject
git_commit_date 1753877213 1753893364
git_commit_sha 2c5960b e0d11ad
release_version 1.51.1-SNAPSHOT~2c5960be47 1.51.1-SNAPSHOT~e0d11ad90a
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1753895205 1753895205
ci_job_id 1055896727 1055896727
ci_pipeline_id 72199701 72199701
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-4-b9cf7jiw 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-4-b9cf7jiw 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 48 metrics, 11 unstable metrics.

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.51.1-SNAPSHOT~e0d11ad90a, baseline=1.51.1-SNAPSHOT~2c5960be47

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.039 s) : 0, 1038903
Total [baseline] (8.555 s) : 0, 8554806
Agent [candidate] (1.052 s) : 0, 1051953
Total [candidate] (8.6 s) : 0, 8599855
section iast
Agent [baseline] (1.176 s) : 0, 1176466
Total [baseline] (9.296 s) : 0, 9296110
Agent [candidate] (1.179 s) : 0, 1178695
Total [candidate] (9.36 s) : 0, 9359841
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.039 s -
Agent iast 1.176 s 137.563 ms (13.2%)
Total tracing 8.555 s -
Total iast 9.296 s 741.304 ms (8.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.052 s -
Agent iast 1.179 s 126.742 ms (12.0%)
Total tracing 8.6 s -
Total iast 9.36 s 759.986 ms (8.8%)
gantt
    title insecure-bank - break down per module: candidate=1.51.1-SNAPSHOT~e0d11ad90a, baseline=1.51.1-SNAPSHOT~2c5960be47

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.422 ms) : 0, 1422
crashtracking [candidate] (1.441 ms) : 0, 1441
BytebuddyAgent [baseline] (727.692 ms) : 0, 727692
BytebuddyAgent [candidate] (735.423 ms) : 0, 735423
GlobalTracer [baseline] (239.783 ms) : 0, 239783
GlobalTracer [candidate] (243.209 ms) : 0, 243209
AppSec [baseline] (30.151 ms) : 0, 30151
AppSec [candidate] (30.601 ms) : 0, 30601
Debugger [baseline] (5.927 ms) : 0, 5927
Debugger [candidate] (6.092 ms) : 0, 6092
Remote Config [baseline] (633.358 µs) : 0, 633
Remote Config [candidate] (659.573 µs) : 0, 660
Telemetry [baseline] (12.455 ms) : 0, 12455
Telemetry [candidate] (13.434 ms) : 0, 13434
section iast
crashtracking [baseline] (1.432 ms) : 0, 1432
crashtracking [candidate] (1.431 ms) : 0, 1431
BytebuddyAgent [baseline] (849.51 ms) : 0, 849510
BytebuddyAgent [candidate] (851.394 ms) : 0, 851394
GlobalTracer [baseline] (231.818 ms) : 0, 231818
GlobalTracer [candidate] (231.666 ms) : 0, 231666
IAST [baseline] (29.225 ms) : 0, 29225
IAST [candidate] (30.139 ms) : 0, 30139
AppSec [baseline] (28.129 ms) : 0, 28129
AppSec [candidate] (27.474 ms) : 0, 27474
Debugger [baseline] (6.625 ms) : 0, 6625
Debugger [candidate] (6.793 ms) : 0, 6793
Remote Config [baseline] (574.936 µs) : 0, 575
Remote Config [candidate] (587.94 µs) : 0, 588
Telemetry [baseline] (8.188 ms) : 0, 8188
Telemetry [candidate] (8.202 ms) : 0, 8202
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.51.1-SNAPSHOT~e0d11ad90a, baseline=1.51.1-SNAPSHOT~2c5960be47

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.05 s) : 0, 1050488
Total [baseline] (10.661 s) : 0, 10660615
Agent [candidate] (1.045 s) : 0, 1044810
Total [candidate] (10.663 s) : 0, 10663378
section appsec
Agent [baseline] (1.22 s) : 0, 1219832
Total [baseline] (10.832 s) : 0, 10832289
Agent [candidate] (1.217 s) : 0, 1216520
Total [candidate] (10.758 s) : 0, 10757821
section iast
Agent [baseline] (1.184 s) : 0, 1184320
Total [baseline] (10.878 s) : 0, 10877595
Agent [candidate] (1.175 s) : 0, 1175217
Total [candidate] (10.9 s) : 0, 10900469
section profiling
Agent [baseline] (1.193 s) : 0, 1193302
Total [baseline] (10.838 s) : 0, 10837865
Agent [candidate] (1.196 s) : 0, 1196322
Total [candidate] (10.848 s) : 0, 10847708
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.05 s -
Agent appsec 1.22 s 169.345 ms (16.1%)
Agent iast 1.184 s 133.832 ms (12.7%)
Agent profiling 1.193 s 142.814 ms (13.6%)
Total tracing 10.661 s -
Total appsec 10.832 s 171.674 ms (1.6%)
Total iast 10.878 s 216.98 ms (2.0%)
Total profiling 10.838 s 177.249 ms (1.7%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.045 s -
Agent appsec 1.217 s 171.709 ms (16.4%)
Agent iast 1.175 s 130.407 ms (12.5%)
Agent profiling 1.196 s 151.512 ms (14.5%)
Total tracing 10.663 s -
Total appsec 10.758 s 94.443 ms (0.9%)
Total iast 10.9 s 237.092 ms (2.2%)
Total profiling 10.848 s 184.33 ms (1.7%)
gantt
    title petclinic - break down per module: candidate=1.51.1-SNAPSHOT~e0d11ad90a, baseline=1.51.1-SNAPSHOT~2c5960be47

    dateFormat X
    axisFormat %s
section tracing
crashtracking [baseline] (1.432 ms) : 0, 1432
crashtracking [candidate] (1.43 ms) : 0, 1430
BytebuddyAgent [baseline] (735.083 ms) : 0, 735083
BytebuddyAgent [candidate] (728.897 ms) : 0, 728897
GlobalTracer [baseline] (243.004 ms) : 0, 243004
GlobalTracer [candidate] (241.026 ms) : 0, 241026
AppSec [baseline] (30.582 ms) : 0, 30582
AppSec [candidate] (30.387 ms) : 0, 30387
Debugger [baseline] (6.04 ms) : 0, 6040
Debugger [candidate] (6.042 ms) : 0, 6042
Remote Config [baseline] (658.249 µs) : 0, 658
Remote Config [candidate] (641.135 µs) : 0, 641
Telemetry [baseline] (11.955 ms) : 0, 11955
Telemetry [candidate] (15.401 ms) : 0, 15401
section appsec
crashtracking [baseline] (1.429 ms) : 0, 1429
crashtracking [candidate] (1.43 ms) : 0, 1430
BytebuddyAgent [baseline] (753.436 ms) : 0, 753436
BytebuddyAgent [candidate] (750.389 ms) : 0, 750389
GlobalTracer [baseline] (234.55 ms) : 0, 234550
GlobalTracer [candidate] (234.521 ms) : 0, 234521
AppSec [baseline] (169.014 ms) : 0, 169014
AppSec [candidate] (169.375 ms) : 0, 169375
Debugger [baseline] (7.851 ms) : 0, 7851
Debugger [candidate] (7.226 ms) : 0, 7226
Remote Config [baseline] (612.084 µs) : 0, 612
Remote Config [candidate] (595.673 µs) : 0, 596
Telemetry [baseline] (8.237 ms) : 0, 8237
Telemetry [candidate] (8.271 ms) : 0, 8271
IAST [baseline] (23.657 ms) : 0, 23657
IAST [candidate] (23.404 ms) : 0, 23404
section iast
crashtracking [baseline] (1.439 ms) : 0, 1439
crashtracking [candidate] (1.425 ms) : 0, 1425
BytebuddyAgent [baseline] (855.566 ms) : 0, 855566
BytebuddyAgent [candidate] (848.306 ms) : 0, 848306
GlobalTracer [baseline] (233.568 ms) : 0, 233568
GlobalTracer [candidate] (232.054 ms) : 0, 232054
AppSec [baseline] (29.15 ms) : 0, 29150
AppSec [candidate] (28.155 ms) : 0, 28155
Debugger [baseline] (6.677 ms) : 0, 6677
Debugger [candidate] (5.756 ms) : 0, 5756
Remote Config [baseline] (591.789 µs) : 0, 592
Remote Config [candidate] (584.032 µs) : 0, 584
Telemetry [baseline] (8.214 ms) : 0, 8214
Telemetry [candidate] (8.118 ms) : 0, 8118
IAST [baseline] (27.855 ms) : 0, 27855
IAST [candidate] (29.872 ms) : 0, 29872
section profiling
ProfilingAgent [baseline] (107.34 ms) : 0, 107340
ProfilingAgent [candidate] (107.848 ms) : 0, 107848
crashtracking [baseline] (1.407 ms) : 0, 1407
crashtracking [candidate] (1.42 ms) : 0, 1420
BytebuddyAgent [baseline] (760.485 ms) : 0, 760485
BytebuddyAgent [candidate] (762.866 ms) : 0, 762866
GlobalTracer [baseline] (221.463 ms) : 0, 221463
GlobalTracer [candidate] (221.127 ms) : 0, 221127
AppSec [baseline] (30.406 ms) : 0, 30406
AppSec [candidate] (30.439 ms) : 0, 30439
Debugger [baseline] (6.233 ms) : 0, 6233
Debugger [candidate] (6.323 ms) : 0, 6323
Remote Config [baseline] (664.712 µs) : 0, 665
Remote Config [candidate] (711.535 µs) : 0, 712
Telemetry [baseline] (15.973 ms) : 0, 15973
Telemetry [candidate] (16.276 ms) : 0, 16276
Profiling [baseline] (107.967 ms) : 0, 107967
Profiling [candidate] (108.495 ms) : 0, 108495
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/fix_grpc_inject
git_commit_date 1753877213 1753893364
git_commit_sha 2c5960b e0d11ad
release_version 1.51.1-SNAPSHOT~2c5960be47 1.51.1-SNAPSHOT~e0d11ad90a
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1753894883 1753894883
ci_job_id 1055896728 1055896728
ci_pipeline_id 72199701 72199701
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-2-ccaml9ft 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-2-ccaml9ft 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 1 performance improvements and 1 performance regressions! Performance is the same for 10 metrics, 12 unstable metrics.

scenario Δ mean http_req_duration Δ mean throughput candidate mean http_req_duration candidate mean throughput baseline mean http_req_duration baseline mean throughput
scenario:load:insecure-bank:no_agent:high_load better
[-267.010µs; -157.442µs] or [-5.871%; -3.462%]
unstable
[-51.957op/s; +148.894op/s] or [-5.143%; +14.740%]
4.336ms 1058.625op/s 4.548ms 1010.156op/s
scenario:load:petclinic:iast:high_load worse
[+1.664ms; +2.503ms] or [+3.877%; +5.834%]
unstable
[-10.972op/s; +3.480op/s] or [-10.062%; +3.191%]
44.999ms 105.304op/s 42.916ms 109.050op/s
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.51.1-SNAPSHOT~e0d11ad90a, baseline=1.51.1-SNAPSHOT~2c5960be47
    dateFormat X
    axisFormat %s
section baseline
no_agent (36.42 ms) : 36129, 36712
.   : milestone, 36420,
appsec (49.175 ms) : 48724, 49627
.   : milestone, 49175,
code_origins (46.047 ms) : 45633, 46461
.   : milestone, 46047,
iast (42.916 ms) : 42541, 43290
.   : milestone, 42916,
profiling (48.026 ms) : 47541, 48511
.   : milestone, 48026,
tracing (45.01 ms) : 44629, 45391
.   : milestone, 45010,
section candidate
no_agent (36.41 ms) : 36120, 36701
.   : milestone, 36410,
appsec (47.949 ms) : 47519, 48378
.   : milestone, 47949,
code_origins (45.437 ms) : 45039, 45835
.   : milestone, 45437,
iast (44.999 ms) : 44594, 45404
.   : milestone, 44999,
profiling (48.271 ms) : 47841, 48701
.   : milestone, 48271,
tracing (44.386 ms) : 44013, 44760
.   : milestone, 44386,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 36.42 ms [36.129 ms, 36.712 ms] -
appsec 49.175 ms [48.724 ms, 49.627 ms] 12.755 ms (35.0%)
code_origins 46.047 ms [45.633 ms, 46.461 ms] 9.627 ms (26.4%)
iast 42.916 ms [42.541 ms, 43.29 ms] 6.495 ms (17.8%)
profiling 48.026 ms [47.541 ms, 48.511 ms] 11.606 ms (31.9%)
tracing 45.01 ms [44.629 ms, 45.391 ms] 8.59 ms (23.6%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 36.41 ms [36.12 ms, 36.701 ms] -
appsec 47.949 ms [47.519 ms, 48.378 ms] 11.538 ms (31.7%)
code_origins 45.437 ms [45.039 ms, 45.835 ms] 9.027 ms (24.8%)
iast 44.999 ms [44.594 ms, 45.404 ms] 8.589 ms (23.6%)
profiling 48.271 ms [47.841 ms, 48.701 ms] 11.861 ms (32.6%)
tracing 44.386 ms [44.013 ms, 44.76 ms] 7.976 ms (21.9%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.51.1-SNAPSHOT~e0d11ad90a, baseline=1.51.1-SNAPSHOT~2c5960be47
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.548 ms) : 4497, 4600
.   : milestone, 4548,
iast (9.404 ms) : 9250, 9558
.   : milestone, 9404,
iast_FULL (13.912 ms) : 13638, 14185
.   : milestone, 13912,
iast_GLOBAL (10.191 ms) : 10013, 10369
.   : milestone, 10191,
profiling (8.563 ms) : 8433, 8693
.   : milestone, 8563,
tracing (7.526 ms) : 7421, 7631
.   : milestone, 7526,
section candidate
no_agent (4.336 ms) : 4286, 4386
.   : milestone, 4336,
iast (9.333 ms) : 9182, 9485
.   : milestone, 9333,
iast_FULL (13.903 ms) : 13626, 14180
.   : milestone, 13903,
iast_GLOBAL (10.439 ms) : 10245, 10633
.   : milestone, 10439,
profiling (8.44 ms) : 8312, 8568
.   : milestone, 8440,
tracing (7.517 ms) : 7413, 7622
.   : milestone, 7517,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.548 ms [4.497 ms, 4.6 ms] -
iast 9.404 ms [9.25 ms, 9.558 ms] 4.856 ms (106.8%)
iast_FULL 13.912 ms [13.638 ms, 14.185 ms] 9.364 ms (205.9%)
iast_GLOBAL 10.191 ms [10.013 ms, 10.369 ms] 5.643 ms (124.1%)
profiling 8.563 ms [8.433 ms, 8.693 ms] 4.015 ms (88.3%)
tracing 7.526 ms [7.421 ms, 7.631 ms] 2.978 ms (65.5%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.336 ms [4.286 ms, 4.386 ms] -
iast 9.333 ms [9.182 ms, 9.485 ms] 4.998 ms (115.3%)
iast_FULL 13.903 ms [13.626 ms, 14.18 ms] 9.567 ms (220.6%)
iast_GLOBAL 10.439 ms [10.245 ms, 10.633 ms] 6.103 ms (140.8%)
profiling 8.44 ms [8.312 ms, 8.568 ms] 4.104 ms (94.7%)
tracing 7.517 ms [7.413 ms, 7.622 ms] 3.181 ms (73.4%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/fix_grpc_inject
git_commit_date 1753877213 1753893364
git_commit_sha 2c5960b e0d11ad
release_version 1.51.1-SNAPSHOT~2c5960be47 1.51.1-SNAPSHOT~e0d11ad90a
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1753895381 1753895381
ci_job_id 1055896729 1055896729
ci_pipeline_id 72199701 72199701
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-5-wqu7punu 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-5-wqu7punu 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.51.1-SNAPSHOT~e0d11ad90a, baseline=1.51.1-SNAPSHOT~2c5960be47
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.472 ms) : 1460, 1483
.   : milestone, 1472,
appsec (3.679 ms) : 3461, 3898
.   : milestone, 3679,
iast (2.186 ms) : 2123, 2248
.   : milestone, 2186,
iast_GLOBAL (2.228 ms) : 2165, 2291
.   : milestone, 2228,
profiling (2.035 ms) : 1985, 2085
.   : milestone, 2035,
tracing (2.002 ms) : 1954, 2051
.   : milestone, 2002,
section candidate
no_agent (1.47 ms) : 1458, 1481
.   : milestone, 1470,
appsec (3.651 ms) : 3432, 3870
.   : milestone, 3651,
iast (2.182 ms) : 2120, 2245
.   : milestone, 2182,
iast_GLOBAL (2.232 ms) : 2169, 2295
.   : milestone, 2232,
profiling (2.038 ms) : 1988, 2089
.   : milestone, 2038,
tracing (2.011 ms) : 1963, 2060
.   : milestone, 2011,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.472 ms [1.46 ms, 1.483 ms] -
appsec 3.679 ms [3.461 ms, 3.898 ms] 2.208 ms (150.0%)
iast 2.186 ms [2.123 ms, 2.248 ms] 713.876 µs (48.5%)
iast_GLOBAL 2.228 ms [2.165 ms, 2.291 ms] 756.506 µs (51.4%)
profiling 2.035 ms [1.985 ms, 2.085 ms] 563.567 µs (38.3%)
tracing 2.002 ms [1.954 ms, 2.051 ms] 530.656 µs (36.1%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.47 ms [1.458 ms, 1.481 ms] -
appsec 3.651 ms [3.432 ms, 3.87 ms] 2.181 ms (148.4%)
iast 2.182 ms [2.12 ms, 2.245 ms] 712.687 µs (48.5%)
iast_GLOBAL 2.232 ms [2.169 ms, 2.295 ms] 762.521 µs (51.9%)
profiling 2.038 ms [1.988 ms, 2.089 ms] 568.687 µs (38.7%)
tracing 2.011 ms [1.963 ms, 2.06 ms] 541.855 µs (36.9%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.51.1-SNAPSHOT~e0d11ad90a, baseline=1.51.1-SNAPSHOT~2c5960be47
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.646 s) : 15646000, 15646000
.   : milestone, 15646000,
appsec (14.767 s) : 14767000, 14767000
.   : milestone, 14767000,
iast (18.354 s) : 18354000, 18354000
.   : milestone, 18354000,
iast_GLOBAL (17.888 s) : 17888000, 17888000
.   : milestone, 17888000,
profiling (15.224 s) : 15224000, 15224000
.   : milestone, 15224000,
tracing (15.1 s) : 15100000, 15100000
.   : milestone, 15100000,
section candidate
no_agent (14.952 s) : 14952000, 14952000
.   : milestone, 14952000,
appsec (14.923 s) : 14923000, 14923000
.   : milestone, 14923000,
iast (18.746 s) : 18746000, 18746000
.   : milestone, 18746000,
iast_GLOBAL (18.148 s) : 18148000, 18148000
.   : milestone, 18148000,
profiling (15.784 s) : 15784000, 15784000
.   : milestone, 15784000,
tracing (15.067 s) : 15067000, 15067000
.   : milestone, 15067000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.646 s [15.646 s, 15.646 s] -
appsec 14.767 s [14.767 s, 14.767 s] -879.0 ms (-5.6%)
iast 18.354 s [18.354 s, 18.354 s] 2.708 s (17.3%)
iast_GLOBAL 17.888 s [17.888 s, 17.888 s] 2.242 s (14.3%)
profiling 15.224 s [15.224 s, 15.224 s] -422.0 ms (-2.7%)
tracing 15.1 s [15.1 s, 15.1 s] -546.0 ms (-3.5%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.952 s [14.952 s, 14.952 s] -
appsec 14.923 s [14.923 s, 14.923 s] -29.0 ms (-0.2%)
iast 18.746 s [18.746 s, 18.746 s] 3.794 s (25.4%)
iast_GLOBAL 18.148 s [18.148 s, 18.148 s] 3.196 s (21.4%)
profiling 15.784 s [15.784 s, 15.784 s] 832.0 ms (5.6%)
tracing 15.067 s [15.067 s, 15.067 s] 115.0 ms (0.8%)

@mhlidd mhlidd marked this pull request as ready for review July 26, 2025 01:29
@mhlidd mhlidd requested a review from a team as a code owner July 26, 2025 01:29
@mhlidd mhlidd requested a review from PerfectSlayer July 26, 2025 01:29
@mhlidd mhlidd changed the title Add check to prevent injection of repeated baggage headers Add check to prevent injection of repeated GRPC headers Jul 28, 2025
@mhlidd mhlidd requested a review from PerfectSlayer July 28, 2025 14:25
@mhlidd mhlidd merged commit 6b55bdc into master Jul 30, 2025
504 checks passed
@mhlidd mhlidd deleted the mhlidd/fix_grpc_inject branch July 30, 2025 20:06
@github-actions github-actions bot added this to the 1.52.0 milestone Jul 30, 2025
nayeem-kamal pushed a commit that referenced this pull request Aug 4, 2025
* adding check for repeated baggage

* writing unit tests

* pushing removal of error log

* adding test to verify allowing repeated non-baggage keys to be set

* update GRPC inject to not allow all repeated keys

* final updates

Signed-off-by: Nayeem Kamal <[email protected]>
svc-squareup-copybara pushed a commit to cashapp/misk that referenced this pull request Aug 5, 2025
| Package | Type | Package file | Manager | Update | Change |
|---|---|---|---|---|---|
| [redis.clients:jedis](https://github.com/redis/jedis) | dependencies |
misk/gradle/libs.versions.toml | gradle | minor | `6.0.0` -> `6.1.0` |
|
[com.google.api.grpc:proto-google-common-protos](https://github.com/googleapis/sdk-platform-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.59.2` -> `2.60.0` |
|
[com.google.cloud:google-cloud-core-http](https://github.com/googleapis/sdk-platform-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.58.2` -> `2.59.0` |
|
[com.google.cloud:google-cloud-core](https://github.com/googleapis/sdk-platform-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.58.2` -> `2.59.0` |
| [com.google.api:gax](https://github.com/googleapis/sdk-platform-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`2.68.2` -> `2.69.0` |
| [com.squareup.wire](https://github.com/square/wire) | plugin |
misk/gradle/libs.versions.toml | gradle | patch | `5.3.5` -> `5.3.6` |
| [com.squareup.wire:wire-schema](https://github.com/square/wire) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch | `5.3.5`
-> `5.3.6` |
| [com.squareup.wire:wire-runtime](https://github.com/square/wire) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch | `5.3.5`
-> `5.3.6` |
| [com.squareup.wire:wire-reflector](https://github.com/square/wire) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch | `5.3.5`
-> `5.3.6` |
| [com.squareup.wire:wire-moshi-adapter](https://github.com/square/wire)
| dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`5.3.5` -> `5.3.6` |
| [com.squareup.wire:wire-grpc-client](https://github.com/square/wire) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch | `5.3.5`
-> `5.3.6` |
| [com.squareup.wire:wire-bom](https://github.com/square/wire) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch | `5.3.5`
-> `5.3.6` |
| [com.datadoghq:dd-trace-api](https://github.com/datadog/dd-trace-java)
| dependencies | misk/gradle/libs.versions.toml | gradle | minor |
`1.51.2` -> `1.52.0` |
| [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.32.14` -> `2.32.15` |
| [software.amazon.awssdk:sqs](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.32.14` -> `2.32.15` |
| [software.amazon.awssdk:regions](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.32.14` -> `2.32.15` |
|
[software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava)
| dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.32.14` -> `2.32.15` |
| [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.32.14` -> `2.32.15` |
| [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.32.14` -> `2.32.15` |
| [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.32.14` -> `2.32.15` |
| [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) |
dependencies | misk/gradle/libs.versions.toml | gradle | patch |
`2.32.14` -> `2.32.15` |

---

### Release Notes

<details>
<summary>redis/jedis (redis.clients:jedis)</summary>

### [`v6.1.0`](https://github.com/redis/jedis/releases/tag/v6.1.0):
6.1.0

### Changes

#### 🚀 New Features

- Add support for SVS-VAMANA vector indexing
([#&#8203;4222](redis/jedis#4222))
- Clarify why new stream entries aren't deleted with XDELEX
([#&#8203;4218](redis/jedis#4218))
- Add support for new stream commands
([#&#8203;4211](redis/jedis#4211))
- Add Support for New BITOP Operations in Redis 8.2
([#&#8203;4188](redis/jedis#4188))
([#&#8203;4190](redis/jedis#4190))
- Add binary stream support for XREAD and XREADGROUP
([#&#8203;3566](redis/jedis#3566))
([#&#8203;4152](redis/jedis#4152))
- Run pipeline in current thread if all the keys on same node
([#&#8203;4149](redis/jedis#4149))

#### 🐛 Bug Fixes

- Restore binary compatibility of SetParams
([#&#8203;4225](redis/jedis#4225))
- Fix memory leak in JedisClusterInfoCache - replica nodes not cleared
([#&#8203;4205](redis/jedis#4205))
- Fix:JedisCluster throws NullPointerException when maxAttempts is set
to 0 ([#&#8203;4186](redis/jedis#4186))

#### 🧰 Maintenance

- DOC-5471 time series doc examples
([#&#8203;4210](redis/jedis#4210))
- Bump jackson.version from 2.19.1 to 2.19.2
([#&#8203;4208](redis/jedis#4208))
- Fix flaky test ClientCommandsTest.killSkipmeYesNo
([#&#8203;4206](redis/jedis#4206))
- Bump org.junit:junit-bom from 5.13.2 to 5.13.3
([#&#8203;4198](redis/jedis#4198))
- Migrate publishing to Maven Central Portal
([#&#8203;4199](redis/jedis#4199))
- Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.7 to 3.2.8
([#&#8203;4197](redis/jedis#4197))
- Bump org.junit:junit-bom from 5.13.1 to 5.13.2
([#&#8203;4192](redis/jedis#4192))
- DOC-5227 added probabilistic data type examples
([#&#8203;4184](redis/jedis#4184))
- Bump jackson.version from 2.19.0 to 2.19.1
([#&#8203;4180](redis/jedis#4180))
- Update test infra to use latest Redis
([#&#8203;4179](redis/jedis#4179))
- Bump org.junit:junit-bom from 5.13.0-RC1 to 5.13.1
([#&#8203;4174](redis/jedis#4174))
- Bump org.json:json from
[`2025010`](redis/jedis@20250107) to
[`2025051`](redis/jedis@20250517)
([#&#8203;4171](redis/jedis#4171))
- Bump org.apache.httpcomponents.client5:httpclient5-fluent from 5.4.4
to 5.5 ([#&#8203;4170](redis/jedis#4170))
- Fix flaky tests in DocumentTest
([#&#8203;3617](redis/jedis#3617))
- Add retryable command execution example
([#&#8203;3780](redis/jedis#3780))
- Bump jackson.version from 2.18.3 to 2.19.0
([#&#8203;4160](redis/jedis#4160))
- Bump com.google.code.gson:gson from 2.12.1 to 2.13.1
([#&#8203;4161](redis/jedis#4161))

#### Contributors

We'd like to thank all the contributors who worked on this release!

[@&#8203;219sansim](https://github.com/219sansim),
[@&#8203;YoHanKi](https://github.com/YoHanKi),
[@&#8203;andy-stark-redis](https://github.com/andy-stark-redis),
[@&#8203;ggivo](https://github.com/ggivo),
[@&#8203;jujn](https://github.com/jujn),
[@&#8203;thachlp](https://github.com/thachlp),
[@&#8203;uglide](https://github.com/uglide) and
[@&#8203;xrayw](https://github.com/xrayw)

</details>

<details>
<summary>googleapis/sdk-platform-java
(com.google.api.grpc:proto-google-common-protos)</summary>

###
[`v2.60.0`](https://github.com/googleapis/sdk-platform-java/blob/HEAD/CHANGELOG.md#2600-2025-06-23)

##### Features

- handle auto pagination for BigQuery v2
([#&#8203;3829](googleapis/sdk-platform-java#3829))
([025c84c](googleapis/sdk-platform-java@025c84c))

##### Dependencies

- update google auth library dependencies to v1.37.1
([#&#8203;3846](googleapis/sdk-platform-java#3846))
([ea1d9e5](googleapis/sdk-platform-java@ea1d9e5))
- update google http client dependencies to v1.47.1
([#&#8203;3848](googleapis/sdk-platform-java#3848))
([a9a39d7](googleapis/sdk-platform-java@a9a39d7))

</details>

<details>
<summary>square/wire (com.squareup.wire)</summary>

###
[`v5.3.6`](https://github.com/square/wire/blob/HEAD/CHANGELOG.md#Version-536)

[Compare Source](square/wire@5.3.5...5.3.6)

*2025-08-05*

##### CLI

- New CLI option `--ignore_unused_roots_and_prunes`
([#&#8203;3354](square/wire#3354))

##### JVM

- Fix: Handle negative hexadecimal in default values
([#&#8203;3355](square/wire#3355))
- Optimization: Avoid copying of repeated and map types when
mutableTypes are being used
([#&#8203;3352](square/wire#3352) by \[Rahul
Ravikumar]\[tikurahul])

##### Swift

- Fix: Properly disambiguate OneOf enum if it has the same name as
enclosing type
([#&#8203;3350](square/wire#3350) by
\[Dimitris Koutsogiorgas]\[dnkoutso])

</details>

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

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

### Components

#### Application Security Management (WAF)

- ✨ Only report ASM\_DD, ASM\_DATA and ASM capabilities when
AppSec is enabled
([#&#8203;9260](DataDog/dd-trace-java#9260) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- 🐛 Fix NPE in AppSecConfigServiceImpl
([#&#8203;9165](DataDog/dd-trace-java#9165) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))
- 🐛 Fix AppSec play.mvc.StatusHeader instrumentation for play 2.6
([#&#8203;9160](DataDog/dd-trace-java#9160) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))

#### Build & Tooling

- ✨📖 Automatically register crashtracking via native
extensions
([#&#8203;8851](DataDog/dd-trace-java#8851) -
[@&#8203;MattAlp](https://github.com/MattAlp))

#### Configuration at Runtime

- ✨ Create activation origin config for telemetry
([#&#8203;9064](DataDog/dd-trace-java#9064) -
[@&#8203;sezen-datadog](https://github.com/sezen-datadog))

#### Continuous Integration Visibility

- ✨ Update GitLab provided tags
([#&#8203;9275](DataDog/dd-trace-java#9275) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- 🐛 Fix base branch SHA usage in GitHub Actions
([#&#8203;9257](DataDog/dd-trace-java#9257) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Add `ci.job.id` tag
([#&#8203;9256](DataDog/dd-trace-java#9256) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Add new org to Weaver instrumentation
([#&#8203;9235](DataDog/dd-trace-java#9235) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano) - thanks
for the contribution!)
- ✨ Improve Git commit info building
([#&#8203;9210](DataDog/dd-trace-java#9210) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Update Attempt to Fix to v5
([#&#8203;9145](DataDog/dd-trace-java#9145) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))

#### Crash tracking

- ✨📖 Automatically register crashtracking via native
extensions
([#&#8203;8851](DataDog/dd-trace-java#8851) -
[@&#8203;MattAlp](https://github.com/MattAlp))

#### Data Streams Monitoring

- ✨ Reduce DSM CPU overheard
([#&#8203;9151](DataDog/dd-trace-java#9151) -
[@&#8203;kr-igor](https://github.com/kr-igor))
- ✨⚡ DSM optimizations for high throughput scenarios
([#&#8203;9137](DataDog/dd-trace-java#9137) -
[@&#8203;kr-igor](https://github.com/kr-igor))

#### Database Monitoring

- 🐛 Fix duplicate trace injection for SQL Server and Oracle DBM full
propagation mode
([#&#8203;9224](DataDog/dd-trace-java#9224) -
[@&#8203;lu-zhengda](https://github.com/lu-zhengda))

#### Dynamic Instrumentation

- 🐛 Add URI in string primitives
([#&#8203;9285](DataDog/dd-trace-java#9285) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Increase SourceFile tracking max queue size
([#&#8203;9271](DataDog/dd-trace-java#9271) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Add capping on SourceFile tracking queue
([#&#8203;9245](DataDog/dd-trace-java#9245) -
[@&#8203;jpbempel](https://github.com/jpbempel))
- ✨ Add third-party filtering in SourceFile tracking
([#&#8203;9205](DataDog/dd-trace-java#9205) -
[@&#8203;jpbempel](https://github.com/jpbempel))

#### ML Observability (LLMObs)

- ✨ Add methods to capture embedding and retrieval spans
([#&#8203;9297](DataDog/dd-trace-java#9297) -
[@&#8203;nayeem-kamal](https://github.com/nayeem-kamal))

#### Metrics

- ✨ Change primary client stats configuration key
([#&#8203;9196](DataDog/dd-trace-java#9196) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Calculate client stats also if the span kind is eligible
([#&#8203;9157](DataDog/dd-trace-java#9157) -
[@&#8203;amarziali](https://github.com/amarziali))
- ✨ Backpropagate peer tags
([#&#8203;9144](DataDog/dd-trace-java#9144) -
[@&#8203;bric3](https://github.com/bric3))
- 🐛 Make client stats reliable in case of downgrade
([#&#8203;9136](DataDog/dd-trace-java#9136) -
[@&#8203;amarziali](https://github.com/amarziali))

#### Platform components

- 🐛 Fix VM options parsing from /proc/fs
([#&#8203;9255](DataDog/dd-trace-java#9255) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))

#### Profiling

- ✨ Switch profile compression to zstd default
([#&#8203;9293](DataDog/dd-trace-java#9293) -
[@&#8203;jbachorik](https://github.com/jbachorik))

- ✨ Bump ddprof to 1.29.0
([#&#8203;9262](DataDog/dd-trace-java#9262) -
[@&#8203;zhengyu123](https://github.com/zhengyu123))
- Potential memory leak and race with the JVMTI wallclock sampler by
[@&#8203;zhengyu123](https://github.com/zhengyu123) in
DataDog/java-profiler#234
- Downport async-profiler no-allocation changes by
[@&#8203;zhengyu123](https://github.com/zhengyu123) in
DataDog/java-profiler#245
- Adopt openjdk safefetch by
[@&#8203;zhengyu123](https://github.com/zhengyu123) in
DataDog/java-profiler#246
- Safe fetch 64-bit value and pointer by
[@&#8203;zhengyu123](https://github.com/zhengyu123) in
DataDog/java-profiler#247
- Rebase on Async-Profiler 4.1 by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#252
- Patch upstream stackWalker.cpp not to fail on unaligned access by
[@&#8203;jbachorik](https://github.com/jbachorik) in
DataDog/java-profiler#218
- Remap thread id to avoid bitmap contention by
[@&#8203;zhengyu123](https://github.com/zhengyu123) in
DataDog/java-profiler#229
- Improve performance using Unsafe to activate/deactivate thread filter
by [@&#8203;zhengyu123](https://github.com/zhengyu123) in
DataDog/java-profiler#230
- Unify context propagation by
[@&#8203;zhengyu123](https://github.com/zhengyu123) in
DataDog/java-profiler#231

- 🐛 Fix the profiler stackdepth setting propagation in recent (22+)
Java versions
([#&#8203;9130](DataDog/dd-trace-java#9130) -
[@&#8203;jbachorik](https://github.com/jbachorik))

#### Realtime User Monitoring

- ✨ Wrap servlet original PrintWriter on rum injector
([#&#8203;9146](DataDog/dd-trace-java#9146) -
[@&#8203;amarziali](https://github.com/amarziali))

#### Telemetry

- ✨ Create activation origin config for telemetry
([#&#8203;9064](DataDog/dd-trace-java#9064) -
[@&#8203;sezen-datadog](https://github.com/sezen-datadog))

#### Tracer core

- ✨⚡ Reduce span construction overhead by switching to
optimized TagMap
([#&#8203;8589](DataDog/dd-trace-java#8589) -
[@&#8203;dougqh](https://github.com/dougqh))
- 🐛 Match Hands Off Config selectors on process\_arguments value
([#&#8203;9201](DataDog/dd-trace-java#9201) -
[@&#8203;paullegranddc](https://github.com/paullegranddc))
- ✨ Move JSON generation to sender thread to improve startup
time.
([#&#8203;9197](DataDog/dd-trace-java#9197) -
[@&#8203;AlexeyKuznetsov-DD](https://github.com/AlexeyKuznetsov-DD))
- ✨ Improve agent to avoid loading global config on main thread
([#&#8203;9190](DataDog/dd-trace-java#9190) -
[@&#8203;PerfectSlayer](https://github.com/PerfectSlayer))
- ✨ add injection metadata fields to telemetry forwarder
([#&#8203;9185](DataDog/dd-trace-java#9185) -
[@&#8203;sydney-tung](https://github.com/sydney-tung))
- 🐛 Avoid race conditions on feature discovery during Writer
creation
([#&#8203;9173](DataDog/dd-trace-java#9173) -
[@&#8203;daniel-mohedano](https://github.com/daniel-mohedano))
- ✨ Surface potential root cause when agent initialization
errors
([#&#8203;9170](DataDog/dd-trace-java#9170) -
[@&#8203;AlexeyKuznetsov-DD](https://github.com/AlexeyKuznetsov-DD))
- 💡 Support adding W3C baggage as span tags
([#&#8203;9169](DataDog/dd-trace-java#9169) -
[@&#8203;rachelyangdog](https://github.com/rachelyangdog))
- ✨⚡ Align our default classloader excludes with OTel
([#&#8203;9161](DataDog/dd-trace-java#9161) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Backpropagate container tags hash coming from the info
endpoint
([#&#8203;9156](DataDog/dd-trace-java#9156) -
[@&#8203;amarziali](https://github.com/amarziali))
- 🐛 Avoid race conditions and multiple agent discovery feature
states
([#&#8203;9135](DataDog/dd-trace-java#9135) -
[@&#8203;amarziali](https://github.com/amarziali))

### Instrumentations

#### AWS SDK instrumentation

- ✨ Enhance Service Representation for Serverless
([#&#8203;9203](DataDog/dd-trace-java#9203) -
[@&#8203;zarirhamza](https://github.com/zarirhamza))

#### gRPC instrumentation

- 🐛 Add check to prevent injection of repeated GRPC headers
([#&#8203;9246](DataDog/dd-trace-java#9246) -
[@&#8203;mhlidd](https://github.com/mhlidd))

#### JDBC instrumentation

- 🐛 Fix duplicate trace injection for SQL Server and Oracle DBM full
propagation mode
([#&#8203;9224](DataDog/dd-trace-java#9224) -
[@&#8203;lu-zhengda](https://github.com/lu-zhengda))

#### Play Framework instrumentation

- 🐛 Fix AppSec play.mvc.StatusHeader instrumentation for play 2.6
([#&#8203;9160](DataDog/dd-trace-java#9160) -
[@&#8203;manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez))

</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**: Enabled.

♻ **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: 9da36329ffa552291a640381780b608ef6513e29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
inst: grpc gRPC instrumentation type: bug Bug report and fix
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants