Skip to content

Conversation

daniel-mohedano
Copy link
Contributor

@daniel-mohedano daniel-mohedano commented Jul 15, 2025

What Does This Do

  • Avoids a race condition in datadog.trace.common.writer.WriterFactory where a call to datadog.communication.ddagent.SharedCommunicationObjects#featuresDiscovery scheduled the discovery of features, but these were accessed immediately after without checking if they had been initialized or not.
  • Avoids an additional race condition by changing the scheduled task to discoverIfOutdated instead of discover, to ensure the features are not reset while reading them in other parts of the code.
  • The unit test has been updated to simulate this race condition with a delaying HttpRequest on feature discovery.

Motivation

  • This race condition incorrectly configured the writer to AgentWriter, even when IntakeWriter was supposed to be used, with info logs like CI Visibility functionality is limited. Please upgrade to Agent v6.40+ or v7.40+ or enable Agentless mode. incorrectly appearing. This had other impacts on the Test Optimization product like session and module data not being reported.

Additional Notes

  • The upgraded test correctly identified the failures of the original code:
image

Contributor Checklist

Jira ticket: [PROJ-IDENT]

@daniel-mohedano daniel-mohedano added type: bug Bug report and fix comp: core Tracer core labels Jul 15, 2025
@daniel-mohedano daniel-mohedano marked this pull request as ready for review July 15, 2025 10:19
@daniel-mohedano daniel-mohedano requested a review from a team as a code owner July 15, 2025 10:19
@daniel-mohedano daniel-mohedano requested a review from mcculls July 15, 2025 10:19
Copy link
Contributor

@mcculls mcculls left a comment

Choose a reason for hiding this comment

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

Approving because the writer/tracer changes are limited to CI-Visibility mode

(we don't want to call discoverIfOutdated in these places for other modes because that would re-introduce a blocking I/O call on the application thread.)

@nikita-tkachenko-datadog
Copy link
Contributor

nikita-tkachenko-datadog commented Jul 15, 2025

It looks like with the way things are the return value of datadog.communication.ddagent.SharedCommunicationObjects#featuresDiscovery is unusable without a subsequent discoverIfOutdated call, as the caller has no guarantee that the returned instance is initialised.
Perhaps it'd be cleaner/more robust if featuresDiscovery returned a Future? Then those who need to use the result would be forced to wait on it, reducing the chance of error, and those who don't need to use it would just pass the future along. @mcculls what do you think?

@pr-commenter
Copy link

pr-commenter bot commented Jul 15, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master daniel.mohedano/evp-proxy-writer
git_commit_date 1752571825 1752577505
git_commit_sha 51532a8 4e880c7
release_version 1.52.0-SNAPSHOT~51532a82ba 1.52.0-SNAPSHOT~4e880c76b9
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1752579323 1752579323
ci_job_id 1028839261 1028839261
ci_pipeline_id 70561734 70561734
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-akr3jkbk 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-akr3jkbk 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 45 metrics, 8 unstable metrics.

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.52.0-SNAPSHOT~4e880c76b9, baseline=1.52.0-SNAPSHOT~51532a82ba

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (998.255 ms) : 0, 998255
Total [baseline] (8.577 s) : 0, 8576849
Agent [candidate] (1.0 s) : 0, 1000232
Total [candidate] (8.555 s) : 0, 8555030
section iast
Agent [baseline] (1.129 s) : 0, 1129120
Total [baseline] (9.271 s) : 0, 9271118
Agent [candidate] (1.131 s) : 0, 1131091
Total [candidate] (9.293 s) : 0, 9292619
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 998.255 ms -
Agent iast 1.129 s 130.865 ms (13.1%)
Total tracing 8.577 s -
Total iast 9.271 s 694.269 ms (8.1%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.0 s -
Agent iast 1.131 s 130.859 ms (13.1%)
Total tracing 8.555 s -
Total iast 9.293 s 737.589 ms (8.6%)
gantt
    title insecure-bank - break down per module: candidate=1.52.0-SNAPSHOT~4e880c76b9, baseline=1.52.0-SNAPSHOT~51532a82ba

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (689.479 ms) : 0, 689479
BytebuddyAgent [candidate] (690.362 ms) : 0, 690362
GlobalTracer [baseline] (242.288 ms) : 0, 242288
GlobalTracer [candidate] (243.589 ms) : 0, 243589
AppSec [baseline] (30.742 ms) : 0, 30742
AppSec [candidate] (30.508 ms) : 0, 30508
Debugger [baseline] (6.028 ms) : 0, 6028
Debugger [candidate] (6.011 ms) : 0, 6011
Remote Config [baseline] (685.123 µs) : 0, 685
Remote Config [candidate] (686.559 µs) : 0, 687
Telemetry [baseline] (8.251 ms) : 0, 8251
Telemetry [candidate] (8.274 ms) : 0, 8274
section iast
BytebuddyAgent [baseline] (803.765 ms) : 0, 803765
BytebuddyAgent [candidate] (805.663 ms) : 0, 805663
GlobalTracer [baseline] (232.074 ms) : 0, 232074
GlobalTracer [candidate] (232.3 ms) : 0, 232300
AppSec [baseline] (30.827 ms) : 0, 30827
AppSec [candidate] (32.19 ms) : 0, 32190
Debugger [baseline] (5.814 ms) : 0, 5814
Debugger [candidate] (5.725 ms) : 0, 5725
Remote Config [baseline] (607.191 µs) : 0, 607
Remote Config [candidate] (594.541 µs) : 0, 595
Telemetry [baseline] (7.982 ms) : 0, 7982
Telemetry [candidate] (7.926 ms) : 0, 7926
IAST [baseline] (27.314 ms) : 0, 27314
IAST [candidate] (25.949 ms) : 0, 25949
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.52.0-SNAPSHOT~4e880c76b9, baseline=1.52.0-SNAPSHOT~51532a82ba

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (992.676 ms) : 0, 992676
Total [baseline] (10.58 s) : 0, 10579755
Agent [candidate] (1.004 s) : 0, 1004050
Total [candidate] (10.656 s) : 0, 10656152
section appsec
Agent [baseline] (1.177 s) : 0, 1176695
Total [baseline] (10.701 s) : 0, 10700911
Agent [candidate] (1.177 s) : 0, 1176793
Total [candidate] (10.753 s) : 0, 10753043
section iast
Agent [baseline] (1.138 s) : 0, 1137637
Total [baseline] (10.806 s) : 0, 10805723
Agent [candidate] (1.131 s) : 0, 1130830
Total [candidate] (10.8 s) : 0, 10800286
section profiling
Agent [baseline] (1.242 s) : 0, 1241904
Total [baseline] (10.997 s) : 0, 10997117
Agent [candidate] (1.24 s) : 0, 1239583
Total [candidate] (10.948 s) : 0, 10948005
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 992.676 ms -
Agent appsec 1.177 s 184.019 ms (18.5%)
Agent iast 1.138 s 144.961 ms (14.6%)
Agent profiling 1.242 s 249.228 ms (25.1%)
Total tracing 10.58 s -
Total appsec 10.701 s 121.155 ms (1.1%)
Total iast 10.806 s 225.968 ms (2.1%)
Total profiling 10.997 s 417.362 ms (3.9%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.004 s -
Agent appsec 1.177 s 172.743 ms (17.2%)
Agent iast 1.131 s 126.779 ms (12.6%)
Agent profiling 1.24 s 235.533 ms (23.5%)
Total tracing 10.656 s -
Total appsec 10.753 s 96.891 ms (0.9%)
Total iast 10.8 s 144.134 ms (1.4%)
Total profiling 10.948 s 291.853 ms (2.7%)
gantt
    title petclinic - break down per module: candidate=1.52.0-SNAPSHOT~4e880c76b9, baseline=1.52.0-SNAPSHOT~51532a82ba

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (684.54 ms) : 0, 684540
BytebuddyAgent [candidate] (694.011 ms) : 0, 694011
GlobalTracer [baseline] (241.886 ms) : 0, 241886
GlobalTracer [candidate] (243.5 ms) : 0, 243500
AppSec [baseline] (30.507 ms) : 0, 30507
AppSec [candidate] (30.566 ms) : 0, 30566
Debugger [baseline] (6.029 ms) : 0, 6029
Debugger [candidate] (6.044 ms) : 0, 6044
Remote Config [baseline] (675.782 µs) : 0, 676
Remote Config [candidate] (688.727 µs) : 0, 689
Telemetry [baseline] (8.139 ms) : 0, 8139
Telemetry [candidate] (8.289 ms) : 0, 8289
section appsec
BytebuddyAgent [baseline] (709.141 ms) : 0, 709141
BytebuddyAgent [candidate] (712.375 ms) : 0, 712375
GlobalTracer [baseline] (236.594 ms) : 0, 236594
GlobalTracer [candidate] (234.852 ms) : 0, 234852
AppSec [baseline] (171.782 ms) : 0, 171782
AppSec [candidate] (170.806 ms) : 0, 170806
Debugger [baseline] (5.777 ms) : 0, 5777
Debugger [candidate] (5.705 ms) : 0, 5705
Remote Config [baseline] (608.98 µs) : 0, 609
Remote Config [candidate] (607.113 µs) : 0, 607
Telemetry [baseline] (8.092 ms) : 0, 8092
Telemetry [candidate] (8.031 ms) : 0, 8031
IAST [baseline] (23.73 ms) : 0, 23730
IAST [candidate] (23.497 ms) : 0, 23497
section iast
BytebuddyAgent [baseline] (810.699 ms) : 0, 810699
BytebuddyAgent [candidate] (805.401 ms) : 0, 805401
GlobalTracer [baseline] (234.059 ms) : 0, 234059
GlobalTracer [candidate] (232.579 ms) : 0, 232579
AppSec [baseline] (28.119 ms) : 0, 28119
AppSec [candidate] (28.797 ms) : 0, 28797
Debugger [baseline] (7.458 ms) : 0, 7458
Debugger [candidate] (5.75 ms) : 0, 5750
Remote Config [baseline] (585.461 µs) : 0, 585
Remote Config [candidate] (580.965 µs) : 0, 581
Telemetry [baseline] (7.846 ms) : 0, 7846
Telemetry [candidate] (7.907 ms) : 0, 7907
IAST [baseline] (28.001 ms) : 0, 28001
IAST [candidate] (29.024 ms) : 0, 29024
section profiling
BytebuddyAgent [baseline] (674.984 ms) : 0, 674984
BytebuddyAgent [candidate] (674.651 ms) : 0, 674651
GlobalTracer [baseline] (361.454 ms) : 0, 361454
GlobalTracer [candidate] (360.339 ms) : 0, 360339
AppSec [baseline] (32.65 ms) : 0, 32650
AppSec [candidate] (32.899 ms) : 0, 32899
Debugger [baseline] (9.764 ms) : 0, 9764
Debugger [candidate] (9.891 ms) : 0, 9891
Remote Config [baseline] (677.083 µs) : 0, 677
Remote Config [candidate] (663.496 µs) : 0, 663
Telemetry [baseline] (10.329 ms) : 0, 10329
Telemetry [candidate] (8.758 ms) : 0, 8758
ProfilingAgent [baseline] (103.419 ms) : 0, 103419
ProfilingAgent [candidate] (103.81 ms) : 0, 103810
Profiling [baseline] (103.444 ms) : 0, 103444
Profiling [candidate] (103.834 ms) : 0, 103834
Loading

Load

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master daniel.mohedano/evp-proxy-writer
git_commit_date 1752571825 1752577505
git_commit_sha 51532a8 4e880c7
release_version 1.52.0-SNAPSHOT~51532a82ba 1.52.0-SNAPSHOT~4e880c76b9
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1752578996 1752578996
ci_job_id 1028839263 1028839263
ci_pipeline_id 70561734 70561734
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-jecfvr8p 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-jecfvr8p 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 4 performance improvements and 1 performance regressions! Performance is the same for 7 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:profiling:high_load worse
[+206.968µs; +508.036µs] or [+2.481%; +6.090%]
unstable
[-95.563op/s; +50.188op/s] or [-17.192%; +9.029%]
8.699ms 533.156op/s 8.341ms 555.844op/s
scenario:load:insecure-bank:iast_GLOBAL:high_load better
[-599.040µs; -211.601µs] or [-5.738%; -2.027%]
unstable
[-37.212op/s; +73.024op/s] or [-8.360%; +16.405%]
10.035ms 463.031op/s 10.441ms 445.125op/s
scenario:load:petclinic:iast:high_load better
[-3.439ms; -2.625ms] or [-7.677%; -5.860%]
unstable
[-0.332op/s; +15.532op/s] or [-0.318%; +14.872%]
41.761ms 112.037op/s 44.792ms 104.438op/s
scenario:load:petclinic:no_agent:high_load better
[-1.705ms; -1.065ms] or [-4.568%; -2.854%]
unstable
[-2.054op/s; +14.949op/s] or [-1.639%; +11.928%]
35.937ms 131.772op/s 37.322ms 125.325op/s
scenario:load:petclinic:profiling:high_load better
[-3.418ms; -2.433ms] or [-6.799%; -4.839%]
unstable
[-1.356op/s; +12.856op/s] or [-1.456%; +13.805%]
47.347ms 98.875op/s 50.273ms 93.125op/s
Request duration reports for petclinic
gantt
    title petclinic - request duration [CI 0.99] : candidate=1.52.0-SNAPSHOT~4e880c76b9, baseline=1.52.0-SNAPSHOT~51532a82ba
    dateFormat X
    axisFormat %s
section baseline
no_agent (37.322 ms) : 37022, 37623
.   : milestone, 37322,
appsec (46.727 ms) : 46302, 47151
.   : milestone, 46727,
code_origins (45.373 ms) : 44968, 45779
.   : milestone, 45373,
iast (44.792 ms) : 44403, 45181
.   : milestone, 44792,
profiling (50.273 ms) : 49788, 50758
.   : milestone, 50273,
tracing (43.222 ms) : 42855, 43588
.   : milestone, 43222,
section candidate
no_agent (35.937 ms) : 35644, 36231
.   : milestone, 35937,
appsec (46.858 ms) : 46438, 47277
.   : milestone, 46858,
code_origins (45.522 ms) : 45125, 45919
.   : milestone, 45522,
iast (41.761 ms) : 41394, 42127
.   : milestone, 41761,
profiling (47.347 ms) : 46918, 47776
.   : milestone, 47347,
tracing (42.593 ms) : 42260, 42927
.   : milestone, 42593,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 37.322 ms [37.022 ms, 37.623 ms] -
appsec 46.727 ms [46.302 ms, 47.151 ms] 9.404 ms (25.2%)
code_origins 45.373 ms [44.968 ms, 45.779 ms] 8.051 ms (21.6%)
iast 44.792 ms [44.403 ms, 45.181 ms] 7.47 ms (20.0%)
profiling 50.273 ms [49.788 ms, 50.758 ms] 12.95 ms (34.7%)
tracing 43.222 ms [42.855 ms, 43.588 ms] 5.899 ms (15.8%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 35.937 ms [35.644 ms, 36.231 ms] -
appsec 46.858 ms [46.438 ms, 47.277 ms] 10.92 ms (30.4%)
code_origins 45.522 ms [45.125 ms, 45.919 ms] 9.584 ms (26.7%)
iast 41.761 ms [41.394 ms, 42.127 ms] 5.823 ms (16.2%)
profiling 47.347 ms [46.918 ms, 47.776 ms] 11.41 ms (31.7%)
tracing 42.593 ms [42.26 ms, 42.927 ms] 6.656 ms (18.5%)
Request duration reports for insecure-bank
gantt
    title insecure-bank - request duration [CI 0.99] : candidate=1.52.0-SNAPSHOT~4e880c76b9, baseline=1.52.0-SNAPSHOT~51532a82ba
    dateFormat X
    axisFormat %s
section baseline
no_agent (4.449 ms) : 4398, 4500
.   : milestone, 4449,
iast (9.25 ms) : 9094, 9406
.   : milestone, 9250,
iast_FULL (14.147 ms) : 13862, 14431
.   : milestone, 14147,
iast_GLOBAL (10.441 ms) : 10257, 10624
.   : milestone, 10441,
profiling (8.341 ms) : 8206, 8477
.   : milestone, 8341,
tracing (7.529 ms) : 7422, 7636
.   : milestone, 7529,
section candidate
no_agent (4.36 ms) : 4309, 4411
.   : milestone, 4360,
iast (9.184 ms) : 9034, 9334
.   : milestone, 9184,
iast_FULL (14.411 ms) : 14121, 14700
.   : milestone, 14411,
iast_GLOBAL (10.035 ms) : 9859, 10212
.   : milestone, 10035,
profiling (8.699 ms) : 8555, 8843
.   : milestone, 8699,
tracing (7.568 ms) : 7455, 7681
.   : milestone, 7568,
Loading
  • baseline results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.449 ms [4.398 ms, 4.5 ms] -
iast 9.25 ms [9.094 ms, 9.406 ms] 4.801 ms (107.9%)
iast_FULL 14.147 ms [13.862 ms, 14.431 ms] 9.698 ms (218.0%)
iast_GLOBAL 10.441 ms [10.257 ms, 10.624 ms] 5.992 ms (134.7%)
profiling 8.341 ms [8.206 ms, 8.477 ms] 3.893 ms (87.5%)
tracing 7.529 ms [7.422 ms, 7.636 ms] 3.08 ms (69.2%)
  • candidate results
Variant Request duration [CI 0.99] Δ no_agent
no_agent 4.36 ms [4.309 ms, 4.411 ms] -
iast 9.184 ms [9.034 ms, 9.334 ms] 4.824 ms (110.6%)
iast_FULL 14.411 ms [14.121 ms, 14.7 ms] 10.05 ms (230.5%)
iast_GLOBAL 10.035 ms [9.859 ms, 10.212 ms] 5.675 ms (130.2%)
profiling 8.699 ms [8.555 ms, 8.843 ms] 4.339 ms (99.5%)
tracing 7.568 ms [7.455 ms, 7.681 ms] 3.208 ms (73.6%)

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master daniel.mohedano/evp-proxy-writer
git_commit_date 1752571825 1752577505
git_commit_sha 51532a8 4e880c7
release_version 1.52.0-SNAPSHOT~51532a82ba 1.52.0-SNAPSHOT~4e880c76b9
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1752579554 1752579554
ci_job_id 1028839265 1028839265
ci_pipeline_id 70561734 70561734
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-1-f5mp0txi 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-1-f5mp0txi 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 12 metrics, 0 unstable metrics.

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.52.0-SNAPSHOT~4e880c76b9, baseline=1.52.0-SNAPSHOT~51532a82ba
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.486 ms) : 1474, 1498
.   : milestone, 1486,
appsec (2.423 ms) : 2373, 2473
.   : milestone, 2423,
iast (2.213 ms) : 2150, 2276
.   : milestone, 2213,
iast_GLOBAL (2.263 ms) : 2199, 2326
.   : milestone, 2263,
profiling (2.072 ms) : 2020, 2124
.   : milestone, 2072,
tracing (2.019 ms) : 1970, 2067
.   : milestone, 2019,
section candidate
no_agent (1.483 ms) : 1472, 1495
.   : milestone, 1483,
appsec (2.42 ms) : 2371, 2470
.   : milestone, 2420,
iast (2.203 ms) : 2141, 2266
.   : milestone, 2203,
iast_GLOBAL (2.262 ms) : 2199, 2325
.   : milestone, 2262,
profiling (2.057 ms) : 2007, 2108
.   : milestone, 2057,
tracing (2.021 ms) : 1972, 2070
.   : milestone, 2021,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.486 ms [1.474 ms, 1.498 ms] -
appsec 2.423 ms [2.373 ms, 2.473 ms] 936.859 µs (63.0%)
iast 2.213 ms [2.15 ms, 2.276 ms] 726.816 µs (48.9%)
iast_GLOBAL 2.263 ms [2.199 ms, 2.326 ms] 776.534 µs (52.3%)
profiling 2.072 ms [2.02 ms, 2.124 ms] 586.023 µs (39.4%)
tracing 2.019 ms [1.97 ms, 2.067 ms] 532.457 µs (35.8%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.483 ms [1.472 ms, 1.495 ms] -
appsec 2.42 ms [2.371 ms, 2.47 ms] 937.202 µs (63.2%)
iast 2.203 ms [2.141 ms, 2.266 ms] 720.068 µs (48.5%)
iast_GLOBAL 2.262 ms [2.199 ms, 2.325 ms] 778.446 µs (52.5%)
profiling 2.057 ms [2.007 ms, 2.108 ms] 573.975 µs (38.7%)
tracing 2.021 ms [1.972 ms, 2.07 ms] 537.714 µs (36.3%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.52.0-SNAPSHOT~4e880c76b9, baseline=1.52.0-SNAPSHOT~51532a82ba
    dateFormat X
    axisFormat %s
section baseline
no_agent (14.949 s) : 14949000, 14949000
.   : milestone, 14949000,
appsec (14.668 s) : 14668000, 14668000
.   : milestone, 14668000,
iast (18.789 s) : 18789000, 18789000
.   : milestone, 18789000,
iast_GLOBAL (17.965 s) : 17965000, 17965000
.   : milestone, 17965000,
profiling (14.839 s) : 14839000, 14839000
.   : milestone, 14839000,
tracing (14.778 s) : 14778000, 14778000
.   : milestone, 14778000,
section candidate
no_agent (15.511 s) : 15511000, 15511000
.   : milestone, 15511000,
appsec (14.842 s) : 14842000, 14842000
.   : milestone, 14842000,
iast (18.325 s) : 18325000, 18325000
.   : milestone, 18325000,
iast_GLOBAL (17.769 s) : 17769000, 17769000
.   : milestone, 17769000,
profiling (15.149 s) : 15149000, 15149000
.   : milestone, 15149000,
tracing (15.232 s) : 15232000, 15232000
.   : milestone, 15232000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 14.949 s [14.949 s, 14.949 s] -
appsec 14.668 s [14.668 s, 14.668 s] -281.0 ms (-1.9%)
iast 18.789 s [18.789 s, 18.789 s] 3.84 s (25.7%)
iast_GLOBAL 17.965 s [17.965 s, 17.965 s] 3.016 s (20.2%)
profiling 14.839 s [14.839 s, 14.839 s] -110.0 ms (-0.7%)
tracing 14.778 s [14.778 s, 14.778 s] -171.0 ms (-1.1%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.511 s [15.511 s, 15.511 s] -
appsec 14.842 s [14.842 s, 14.842 s] -669.0 ms (-4.3%)
iast 18.325 s [18.325 s, 18.325 s] 2.814 s (18.1%)
iast_GLOBAL 17.769 s [17.769 s, 17.769 s] 2.258 s (14.6%)
profiling 15.149 s [15.149 s, 15.149 s] -362.0 ms (-2.3%)
tracing 15.232 s [15.232 s, 15.232 s] -279.0 ms (-1.8%)

Co-authored-by: Nikita Tkachenko <[email protected]>
@mcculls
Copy link
Contributor

mcculls commented Jul 15, 2025

Perhaps it'd be cleaner/more robust if featuresDiscovery returned a Future? Then those who need to use the result would be forced to wait on it, reducing the chance of error, and those who don't need to use it would just pass the future along. @mcculls what do you think?

Firstly a warning to be careful of using certain Future related types and other concurrency primitives during premain because if they're loaded before we get to do field-injection then we lose our chance to inject the field and have to fall back to a weak map which is much less performant (it's why we have FieldInjectionSmokeTest to watch out for this)

Secondly we already have a way for products/services to wait for the initial result: https://github.com/DataDog/dd-trace-java/blob/v1.51.0/communication/src/main/java/datadog/communication/ddagent/SharedCommunicationObjects.java#L63

This is used to defer part of the Writer setup: https://github.com/DataDog/dd-trace-java/blob/v1.51.0/dd-trace-core/src/main/java/datadog/trace/core/CoreTracer.java#L690

Unfortunately it's hard to do the same for CI-Vis because of how it's currently integrated into the tracer, so I'm fine with these simpler changes in the short-term.

In the medium to long-term I'd prefer to rework startup to use run-levels, so it's clear what a product/feature can do at various points during startup and it's easier to order things. It would also make clearer the dependencies between products/services and help to untangle things in Agent , SharedCommunicationObjects, etc.

EDIT:

those who need to use the result would be forced to wait on it

This is where we need to be careful in the general case, because often we're setting things up on the application thread - and waiting here blocks the application. Ideally we would only do enough work on the application thread to capture observations/traces, etc. from it (since that can be buffered.) Once we get discovery back from the agent then we know how to send that data and can offload the buffer.

This is a simple example, depending on the feature it may not be possible to do much until we complete the agent discovery - it gets harder when you have dependencies between products and their startup (hence the need for run-levels or something similar)

@daniel-mohedano daniel-mohedano merged commit 785ce96 into master Jul 15, 2025
543 checks passed
@daniel-mohedano daniel-mohedano deleted the daniel.mohedano/evp-proxy-writer branch July 15, 2025 12:13
@github-actions github-actions bot added this to the 1.52.0 milestone Jul 15, 2025
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
comp: core Tracer core type: bug Bug report and fix
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants