Skip to content

Conversation

mhlidd
Copy link
Contributor

@mhlidd mhlidd commented Mar 10, 2025

What Does This Do

Introduces support for a new config TRACE_PROPAGATION_BEHAVIOR_EXTRACT. RFC

Accepted Values:

  • continue: The tracing library continues the trace from the incoming headers, if present. Also, incoming baggage is propagated. (Default Value)
  • restart: The tracing library always starts a new trace with a new trace-id. Context extraction will occur as otherwise configured, except that the local span will no longer have a parent-child span relationship with the incoming trace context, instead it will reference the incoming trace context via a span link. Also, incoming baggage is propagated.
  • ignore: The tracing library always starts a new trace with a new trace-id without creating any span links. Also, incoming baggage is dropped.

Motivation

Additional Notes

Contributor Checklist

Jira ticket: APMAPI-1010

@mhlidd mhlidd added type: enhancement Enhancements and improvements comp: context propagation Trace context propagation labels Mar 10, 2025
@pr-commenter
Copy link

pr-commenter bot commented Mar 10, 2025

Benchmarks

Startup

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/tracecontext_propagation_restart
git_commit_date 1742305462 1742328620
git_commit_sha ffa2073 534b1ff
release_version 1.48.0-SNAPSHOT~ffa2073a5c 1.48.0-SNAPSHOT~534b1ffcfb
See matching parameters
Baseline Candidate
application insecure-bank insecure-bank
ci_job_date 1742331144 1742331144
ci_job_id 853838903 853838903
ci_pipeline_id 59245016 59245016
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-ybd4envy-project-304-concurrent-0-55oavc10 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-ybd4envy-project-304-concurrent-0-55oavc10 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
module Agent Agent
parent None None
variant iast iast

Summary

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

Startup time reports for insecure-bank
gantt
    title insecure-bank - global startup overhead: candidate=1.48.0-SNAPSHOT~534b1ffcfb, baseline=1.48.0-SNAPSHOT~ffa2073a5c

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.049 s) : 0, 1048889
Total [baseline] (8.677 s) : 0, 8677363
Agent [candidate] (1.044 s) : 0, 1044417
Total [candidate] (8.666 s) : 0, 8666246
section iast
Agent [baseline] (1.171 s) : 0, 1170685
Total [baseline] (9.238 s) : 0, 9237796
Agent [candidate] (1.177 s) : 0, 1176538
Total [candidate] (9.275 s) : 0, 9275015
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.182 s) : 0, 1181875
Total [baseline] (9.173 s) : 0, 9173281
Agent [candidate] (1.187 s) : 0, 1186743
Total [candidate] (9.213 s) : 0, 9213052
section iast_TELEMETRY_OFF
Agent [baseline] (1.175 s) : 0, 1175351
Total [baseline] (9.247 s) : 0, 9247318
Agent [candidate] (1.171 s) : 0, 1171339
Total [candidate] (9.294 s) : 0, 9293763
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.049 s -
Agent iast 1.171 s 121.796 ms (11.6%)
Agent iast_HARDCODED_SECRET_DISABLED 1.182 s 132.986 ms (12.7%)
Agent iast_TELEMETRY_OFF 1.175 s 126.462 ms (12.1%)
Total tracing 8.677 s -
Total iast 9.238 s 560.434 ms (6.5%)
Total iast_HARDCODED_SECRET_DISABLED 9.173 s 495.918 ms (5.7%)
Total iast_TELEMETRY_OFF 9.247 s 569.955 ms (6.6%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.044 s -
Agent iast 1.177 s 132.121 ms (12.7%)
Agent iast_HARDCODED_SECRET_DISABLED 1.187 s 142.325 ms (13.6%)
Agent iast_TELEMETRY_OFF 1.171 s 126.922 ms (12.2%)
Total tracing 8.666 s -
Total iast 9.275 s 608.769 ms (7.0%)
Total iast_HARDCODED_SECRET_DISABLED 9.213 s 546.806 ms (6.3%)
Total iast_TELEMETRY_OFF 9.294 s 627.517 ms (7.2%)
gantt
    title insecure-bank - break down per module: candidate=1.48.0-SNAPSHOT~534b1ffcfb, baseline=1.48.0-SNAPSHOT~ffa2073a5c

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (723.247 ms) : 0, 723247
BytebuddyAgent [candidate] (721.921 ms) : 0, 721921
GlobalTracer [baseline] (240.989 ms) : 0, 240989
GlobalTracer [candidate] (239.567 ms) : 0, 239567
AppSec [baseline] (54.938 ms) : 0, 54938
AppSec [candidate] (54.742 ms) : 0, 54742
Remote Config [baseline] (693.039 µs) : 0, 693
Remote Config [candidate] (684.42 µs) : 0, 684
Telemetry [baseline] (13.77 ms) : 0, 13770
Telemetry [candidate] (12.237 ms) : 0, 12237
section iast
BytebuddyAgent [baseline] (837.408 ms) : 0, 837408
BytebuddyAgent [candidate] (842.859 ms) : 0, 842859
GlobalTracer [baseline] (229.756 ms) : 0, 229756
GlobalTracer [candidate] (230.202 ms) : 0, 230202
AppSec [baseline] (56.348 ms) : 0, 56348
AppSec [candidate] (56.24 ms) : 0, 56240
Remote Config [baseline] (605.82 µs) : 0, 606
Remote Config [candidate] (603.061 µs) : 0, 603
Telemetry [baseline] (8.629 ms) : 0, 8629
Telemetry [candidate] (8.662 ms) : 0, 8662
IAST [baseline] (22.77 ms) : 0, 22770
IAST [candidate] (22.725 ms) : 0, 22725
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (845.758 ms) : 0, 845758
BytebuddyAgent [candidate] (848.264 ms) : 0, 848264
GlobalTracer [baseline] (231.571 ms) : 0, 231571
GlobalTracer [candidate] (233.225 ms) : 0, 233225
AppSec [baseline] (56.509 ms) : 0, 56509
AppSec [candidate] (56.982 ms) : 0, 56982
Remote Config [baseline] (614.409 µs) : 0, 614
Remote Config [candidate] (621.607 µs) : 0, 622
Telemetry [baseline] (8.837 ms) : 0, 8837
Telemetry [candidate] (8.883 ms) : 0, 8883
IAST [baseline] (23.249 ms) : 0, 23249
IAST [candidate] (23.416 ms) : 0, 23416
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (840.791 ms) : 0, 840791
BytebuddyAgent [candidate] (836.583 ms) : 0, 836583
GlobalTracer [baseline] (231.479 ms) : 0, 231479
GlobalTracer [candidate] (231.1 ms) : 0, 231100
AppSec [baseline] (55.388 ms) : 0, 55388
AppSec [candidate] (56.691 ms) : 0, 56691
Remote Config [baseline] (596.34 µs) : 0, 596
Remote Config [candidate] (600.795 µs) : 0, 601
Telemetry [baseline] (8.566 ms) : 0, 8566
Telemetry [candidate] (8.68 ms) : 0, 8680
IAST [baseline] (23.235 ms) : 0, 23235
IAST [candidate] (22.431 ms) : 0, 22431
Loading
Startup time reports for petclinic
gantt
    title petclinic - global startup overhead: candidate=1.48.0-SNAPSHOT~534b1ffcfb, baseline=1.48.0-SNAPSHOT~ffa2073a5c

    dateFormat X
    axisFormat %s
section tracing
Agent [baseline] (1.047 s) : 0, 1046822
Total [baseline] (10.524 s) : 0, 10523514
Agent [candidate] (1.044 s) : 0, 1043508
Total [candidate] (10.434 s) : 0, 10434263
section appsec
Agent [baseline] (1.186 s) : 0, 1185852
Total [baseline] (10.753 s) : 0, 10753017
Agent [candidate] (1.183 s) : 0, 1183312
Total [candidate] (10.77 s) : 0, 10769935
section iast
Agent [baseline] (1.172 s) : 0, 1171760
Total [baseline] (10.976 s) : 0, 10975615
Agent [candidate] (1.18 s) : 0, 1179596
Total [candidate] (11.036 s) : 0, 11035622
section profiling
Agent [baseline] (1.26 s) : 0, 1260285
Total [baseline] (10.864 s) : 0, 10863608
Agent [candidate] (1.267 s) : 0, 1267457
Total [candidate] (10.844 s) : 0, 10844387
Loading
  • baseline results
Module Variant Duration Δ tracing
Agent tracing 1.047 s -
Agent appsec 1.186 s 139.03 ms (13.3%)
Agent iast 1.172 s 124.938 ms (11.9%)
Agent profiling 1.26 s 213.463 ms (20.4%)
Total tracing 10.524 s -
Total appsec 10.753 s 229.503 ms (2.2%)
Total iast 10.976 s 452.101 ms (4.3%)
Total profiling 10.864 s 340.095 ms (3.2%)
  • candidate results
Module Variant Duration Δ tracing
Agent tracing 1.044 s -
Agent appsec 1.183 s 139.803 ms (13.4%)
Agent iast 1.18 s 136.088 ms (13.0%)
Agent profiling 1.267 s 223.948 ms (21.5%)
Total tracing 10.434 s -
Total appsec 10.77 s 335.672 ms (3.2%)
Total iast 11.036 s 601.359 ms (5.8%)
Total profiling 10.844 s 410.123 ms (3.9%)
gantt
    title petclinic - break down per module: candidate=1.48.0-SNAPSHOT~534b1ffcfb, baseline=1.48.0-SNAPSHOT~ffa2073a5c

    dateFormat X
    axisFormat %s
section tracing
BytebuddyAgent [baseline] (722.443 ms) : 0, 722443
BytebuddyAgent [candidate] (718.508 ms) : 0, 718508
GlobalTracer [baseline] (240.505 ms) : 0, 240505
GlobalTracer [candidate] (239.431 ms) : 0, 239431
AppSec [baseline] (54.906 ms) : 0, 54906
AppSec [candidate] (54.646 ms) : 0, 54646
Remote Config [baseline] (692.308 µs) : 0, 692
Remote Config [candidate] (687.2 µs) : 0, 687
Telemetry [baseline] (12.959 ms) : 0, 12959
Telemetry [candidate] (15.076 ms) : 0, 15076
section appsec
BytebuddyAgent [baseline] (738.024 ms) : 0, 738024
BytebuddyAgent [candidate] (735.882 ms) : 0, 735882
GlobalTracer [baseline] (237.275 ms) : 0, 237275
GlobalTracer [candidate] (236.169 ms) : 0, 236169
AppSec [baseline] (175.566 ms) : 0, 175566
AppSec [candidate] (176.353 ms) : 0, 176353
Remote Config [baseline] (662.662 µs) : 0, 663
Remote Config [candidate] (662.556 µs) : 0, 663
Telemetry [baseline] (8.315 ms) : 0, 8315
Telemetry [candidate] (8.294 ms) : 0, 8294
IAST [baseline] (21.656 ms) : 0, 21656
IAST [candidate] (21.495 ms) : 0, 21495
section iast
BytebuddyAgent [baseline] (838.34 ms) : 0, 838340
BytebuddyAgent [candidate] (843.645 ms) : 0, 843645
GlobalTracer [baseline] (230.122 ms) : 0, 230122
GlobalTracer [candidate] (231.257 ms) : 0, 231257
AppSec [baseline] (55.979 ms) : 0, 55979
AppSec [candidate] (56.025 ms) : 0, 56025
Remote Config [baseline] (606.331 µs) : 0, 606
Remote Config [candidate] (618.955 µs) : 0, 619
Telemetry [baseline] (8.668 ms) : 0, 8668
Telemetry [candidate] (8.885 ms) : 0, 8885
IAST [baseline] (22.887 ms) : 0, 22887
IAST [candidate] (23.914 ms) : 0, 23914
section profiling
BytebuddyAgent [baseline] (709.43 ms) : 0, 709430
BytebuddyAgent [candidate] (714.053 ms) : 0, 714053
GlobalTracer [baseline] (350.23 ms) : 0, 350230
GlobalTracer [candidate] (351.943 ms) : 0, 351943
AppSec [baseline] (54.22 ms) : 0, 54220
AppSec [candidate] (53.771 ms) : 0, 53771
Remote Config [baseline] (675.358 µs) : 0, 675
Remote Config [candidate] (726.714 µs) : 0, 727
Telemetry [baseline] (8.958 ms) : 0, 8958
Telemetry [candidate] (8.966 ms) : 0, 8966
ProfilingAgent [baseline] (96.043 ms) : 0, 96043
ProfilingAgent [candidate] (96.926 ms) : 0, 96926
Profiling [baseline] (96.067 ms) : 0, 96067
Profiling [candidate] (96.95 ms) : 0, 96950
Loading

Load

Dacapo

Parameters

Baseline Candidate
baseline_or_candidate baseline candidate
git_branch master mhlidd/tracecontext_propagation_restart
git_commit_date 1742305462 1742328620
git_commit_sha ffa2073 534b1ff
release_version 1.48.0-SNAPSHOT~ffa2073a5c 1.48.0-SNAPSHOT~534b1ffcfb
See matching parameters
Baseline Candidate
application biojava biojava
ci_job_date 1742330699 1742330699
ci_job_id 853838905 853838905
ci_pipeline_id 59245016 59245016
cpu_model Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
kernel_version Linux runner-psmztocj-project-304-concurrent-3-dxvpohve 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux Linux runner-psmztocj-project-304-concurrent-3-dxvpohve 6.8.0-1024-aws #26~22.04.1-Ubuntu SMP Wed Feb 19 06:54:57 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
variant appsec appsec

Summary

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

Execution time for tomcat
gantt
    title tomcat - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~534b1ffcfb, baseline=1.48.0-SNAPSHOT~ffa2073a5c
    dateFormat X
    axisFormat %s
section baseline
no_agent (1.472 ms) : 1461, 1484
.   : milestone, 1472,
appsec (2.34 ms) : 2296, 2384
.   : milestone, 2340,
iast (2.124 ms) : 2068, 2179
.   : milestone, 2124,
iast_GLOBAL (2.172 ms) : 2116, 2229
.   : milestone, 2172,
profiling (2.001 ms) : 1956, 2046
.   : milestone, 2001,
tracing (1.948 ms) : 1906, 1991
.   : milestone, 1948,
section candidate
no_agent (1.476 ms) : 1464, 1487
.   : milestone, 1476,
appsec (2.343 ms) : 2299, 2387
.   : milestone, 2343,
iast (2.135 ms) : 2079, 2192
.   : milestone, 2135,
iast_GLOBAL (2.161 ms) : 2105, 2218
.   : milestone, 2161,
profiling (1.973 ms) : 1929, 2018
.   : milestone, 1973,
tracing (1.958 ms) : 1916, 2001
.   : milestone, 1958,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.472 ms [1.461 ms, 1.484 ms] -
appsec 2.34 ms [2.296 ms, 2.384 ms] 867.412 µs (58.9%)
iast 2.124 ms [2.068 ms, 2.179 ms] 651.194 µs (44.2%)
iast_GLOBAL 2.172 ms [2.116 ms, 2.229 ms] 699.721 µs (47.5%)
profiling 2.001 ms [1.956 ms, 2.046 ms] 528.407 µs (35.9%)
tracing 1.948 ms [1.906 ms, 1.991 ms] 475.855 µs (32.3%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 1.476 ms [1.464 ms, 1.487 ms] -
appsec 2.343 ms [2.299 ms, 2.387 ms] 866.915 µs (58.7%)
iast 2.135 ms [2.079 ms, 2.192 ms] 659.288 µs (44.7%)
iast_GLOBAL 2.161 ms [2.105 ms, 2.218 ms] 685.563 µs (46.5%)
profiling 1.973 ms [1.929 ms, 2.018 ms] 497.278 µs (33.7%)
tracing 1.958 ms [1.916 ms, 2.001 ms] 482.635 µs (32.7%)
Execution time for biojava
gantt
    title biojava - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~534b1ffcfb, baseline=1.48.0-SNAPSHOT~ffa2073a5c
    dateFormat X
    axisFormat %s
section baseline
no_agent (15.496 s) : 15496000, 15496000
.   : milestone, 15496000,
appsec (14.829 s) : 14829000, 14829000
.   : milestone, 14829000,
iast (18.44 s) : 18440000, 18440000
.   : milestone, 18440000,
iast_GLOBAL (17.755 s) : 17755000, 17755000
.   : milestone, 17755000,
profiling (15.61 s) : 15610000, 15610000
.   : milestone, 15610000,
tracing (14.951 s) : 14951000, 14951000
.   : milestone, 14951000,
section candidate
no_agent (15.256 s) : 15256000, 15256000
.   : milestone, 15256000,
appsec (14.86 s) : 14860000, 14860000
.   : milestone, 14860000,
iast (18.783 s) : 18783000, 18783000
.   : milestone, 18783000,
iast_GLOBAL (18.237 s) : 18237000, 18237000
.   : milestone, 18237000,
profiling (14.975 s) : 14975000, 14975000
.   : milestone, 14975000,
tracing (14.943 s) : 14943000, 14943000
.   : milestone, 14943000,
Loading
  • baseline results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.496 s [15.496 s, 15.496 s] -
appsec 14.829 s [14.829 s, 14.829 s] -667.0 ms (-4.3%)
iast 18.44 s [18.44 s, 18.44 s] 2.944 s (19.0%)
iast_GLOBAL 17.755 s [17.755 s, 17.755 s] 2.259 s (14.6%)
profiling 15.61 s [15.61 s, 15.61 s] 114.0 ms (0.7%)
tracing 14.951 s [14.951 s, 14.951 s] -545.0 ms (-3.5%)
  • candidate results
Variant Execution Time [CI 0.99] Δ no_agent
no_agent 15.256 s [15.256 s, 15.256 s] -
appsec 14.86 s [14.86 s, 14.86 s] -396.0 ms (-2.6%)
iast 18.783 s [18.783 s, 18.783 s] 3.527 s (23.1%)
iast_GLOBAL 18.237 s [18.237 s, 18.237 s] 2.981 s (19.5%)
profiling 14.975 s [14.975 s, 14.975 s] -281.0 ms (-1.8%)
tracing 14.943 s [14.943 s, 14.943 s] -313.0 ms (-2.1%)

Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

Left few comments as part of early review 🙏

@mhlidd mhlidd marked this pull request as ready for review March 14, 2025 19:57
@mhlidd mhlidd requested review from a team as code owners March 14, 2025 19:57
Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

Looking good! Left a bunch of comments for polish but everything's here 👍

RESTART,
IGNORE;

private String displayName;
Copy link
Contributor

Choose a reason for hiding this comment

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

For the record, enum can have constructor too.

So you should be able to set the displayName final and compute it in constructor.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

TBH I'm not sure what the benefit of having a constructor here... where would it actually be used? I added one constructor in the new commit, but not sure if it is what you were imagining.

Copy link
Contributor

Choose a reason for hiding this comment

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

The main difference between the lazy and the constructor will be the initialization time.
For the lazy, it will be done when accessing the string representation (so when parsing config).
For the constructor one, it will be done when loading the type.
For lazy initialization, you might need to care about async access and prevent double initialization on concurrent access.
All of those is advice for general programming. In this case, it does not matter much as Config will appear near startup, and the initialized resources are not significant.

What I had in mind about the constructor was:

TracePropagationBehaviorExtract() {
    this.displayName = name().toLowerCase(ROOT);
}

The same initialization than yours on toString() but moved already to simplify the logic.
Its mostly for the sake of Java discussion, there is no real impact for you PR 😉

Copy link
Contributor

@PerfectSlayer PerfectSlayer left a comment

Choose a reason for hiding this comment

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

Looking good! 🎉

RESTART,
IGNORE;

private String displayName;
Copy link
Contributor

Choose a reason for hiding this comment

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

The main difference between the lazy and the constructor will be the initialization time.
For the lazy, it will be done when accessing the string representation (so when parsing config).
For the constructor one, it will be done when loading the type.
For lazy initialization, you might need to care about async access and prevent double initialization on concurrent access.
All of those is advice for general programming. In this case, it does not matter much as Config will appear near startup, and the initialized resources are not significant.

What I had in mind about the constructor was:

TracePropagationBehaviorExtract() {
    this.displayName = name().toLowerCase(ROOT);
}

The same initialization than yours on toString() but moved already to simplify the logic.
Its mostly for the sake of Java discussion, there is no real impact for you PR 😉

@Override
public String toString() {
String string = displayName;
if (displayName == null) {
Copy link
Contributor

@amarziali amarziali Mar 18, 2025

Choose a reason for hiding this comment

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

This can just be simplified like this:

if (displayName == null) {
  displayName = name().toLowerCase(Locale.ROOT);
}
return displayName;

Copy link
Contributor

Choose a reason for hiding this comment

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

I even proposed an early initialization in constructor :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Does implementing the initialization in the constructor take care of all cases where toString() might be called? 🤔

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

---

### Release Notes

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

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

*2025-04-09*

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

</details>

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

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

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

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

</details>

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

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

### Components

#### Tracer internal logging

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

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

### Known Bugs

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

### Components

#### Application Security Management (IAST)

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

#### Application Security Management (WAF)

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

#### Build & Tooling

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

#### Configuration at Runtime

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

#### Continuous Integration Visibility

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

#### Crash tracking

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

#### Data Streams Monitoring

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

#### Dynamic Instrumentation

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

#### OpenTracing

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

#### Profiling

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

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

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

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

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

#### Telemetry

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

#### Testing

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

#### Trace context propagation

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

#### Tracer core

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

#### Tracer internal logging

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

#### Tracer public API

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

### Instrumentations

####

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

#### Apache Spark instrumentation

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

#### Armeria Instrumentation

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

#### AWS DynamoDB Instrumentation

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

#### AWS SDK instrumentation

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

#### Azure Functions instrumentation

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

#### Core Java language instrumentation

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

#### Eclipse Vert.x instrumentation

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

#### Kafka instrumentation

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

#### Kotlin instrumentation

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

#### OpenTelemetry instrumentation

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

#### Spring instrumentation

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

#### WebSocket Instrumentation

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

#### All other instrumentations

- ✨ Introduce cache for peer.hostname lookup
([#&#8203;8601](DataDog/dd-trace-java#8601) -
[@&#8203;mcculls](https://github.com/mcculls))
- ✨ Support pekko http 1.1
([#&#8203;8532](DataDog/dd-trace-java#8532) -
[@&#8203;amarziali](https://github.com/amarziali))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 6pm every weekday,before 2am
every weekday" in timezone Australia/Melbourne, Automerge - At any time
(no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Never, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://github.com/renovatebot/renovate).

GitOrigin-RevId: 331314f71acaced3adc75ea5d7e855c248d593fc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
comp: context propagation Trace context propagation type: enhancement Enhancements and improvements
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants