-
Notifications
You must be signed in to change notification settings - Fork 302
Add support for scanning jar from loaded class #8370
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
Conversation
Debugger benchmarksParameters
See matching parameters
SummaryFound 0 performance improvements and 4 performance regressions! Performance is the same for 4 metrics, 7 unstable metrics.
See unchanged results
Request duration reports for reportsgantt
title reports - request duration [CI 0.99] : candidate=None, baseline=None
dateFormat X
axisFormat %s
section baseline
noprobe (320.726 µs) : 271, 370
. : milestone, 321,
basic (317.455 µs) : 306, 329
. : milestone, 317,
loop (10.136 ms) : 10092, 10180
. : milestone, 10136,
section candidate
noprobe (316.959 µs) : 271, 363
. : milestone, 317,
basic (312.348 µs) : 303, 321
. : milestone, 312,
loop (10.368 ms) : 10304, 10431
. : milestone, 10368,
|
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 59 metrics, 4 unstable metrics. Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.47.0-SNAPSHOT~62c40a3a4c, baseline=1.47.0-SNAPSHOT~cb1d8ed79d
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.051 s) : 0, 1050991
Total [baseline] (8.691 s) : 0, 8691230
Agent [candidate] (1.057 s) : 0, 1057238
Total [candidate] (8.702 s) : 0, 8702474
section iast
Agent [baseline] (1.169 s) : 0, 1169303
Total [baseline] (9.214 s) : 0, 9214243
Agent [candidate] (1.17 s) : 0, 1169749
Total [candidate] (9.164 s) : 0, 9163874
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.175 s) : 0, 1175158
Total [baseline] (9.184 s) : 0, 9184429
Agent [candidate] (1.172 s) : 0, 1172362
Total [candidate] (9.168 s) : 0, 9168374
section iast_TELEMETRY_OFF
Agent [baseline] (1.168 s) : 0, 1167663
Total [baseline] (9.184 s) : 0, 9183679
Agent [candidate] (1.169 s) : 0, 1169134
Total [candidate] (9.195 s) : 0, 9195101
gantt
title insecure-bank - break down per module: candidate=1.47.0-SNAPSHOT~62c40a3a4c, baseline=1.47.0-SNAPSHOT~cb1d8ed79d
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (726.357 ms) : 0, 726357
BytebuddyAgent [candidate] (726.718 ms) : 0, 726718
GlobalTracer [baseline] (241.642 ms) : 0, 241642
GlobalTracer [candidate] (246.622 ms) : 0, 246622
AppSec [baseline] (56.255 ms) : 0, 56255
AppSec [candidate] (55.955 ms) : 0, 55955
Remote Config [baseline] (711.781 µs) : 0, 712
Remote Config [candidate] (741.723 µs) : 0, 742
Telemetry [baseline] (10.891 ms) : 0, 10891
Telemetry [candidate] (11.751 ms) : 0, 11751
section iast
BytebuddyAgent [baseline] (835.539 ms) : 0, 835539
BytebuddyAgent [candidate] (833.17 ms) : 0, 833170
GlobalTracer [baseline] (229.262 ms) : 0, 229262
GlobalTracer [candidate] (232.465 ms) : 0, 232465
AppSec [baseline] (57.283 ms) : 0, 57283
AppSec [candidate] (56.72 ms) : 0, 56720
Remote Config [baseline] (616.16 µs) : 0, 616
Remote Config [candidate] (613.767 µs) : 0, 614
Telemetry [baseline] (8.785 ms) : 0, 8785
Telemetry [candidate] (8.672 ms) : 0, 8672
IAST [baseline] (22.903 ms) : 0, 22903
IAST [candidate] (22.907 ms) : 0, 22907
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (840.312 ms) : 0, 840312
BytebuddyAgent [candidate] (833.525 ms) : 0, 833525
GlobalTracer [baseline] (230.117 ms) : 0, 230117
GlobalTracer [candidate] (233.861 ms) : 0, 233861
AppSec [baseline] (57.037 ms) : 0, 57037
AppSec [candidate] (57.465 ms) : 0, 57465
Remote Config [baseline] (612.202 µs) : 0, 612
Remote Config [candidate] (628.55 µs) : 0, 629
Telemetry [baseline] (8.77 ms) : 0, 8770
Telemetry [candidate] (8.744 ms) : 0, 8744
IAST [baseline] (23.138 ms) : 0, 23138
IAST [candidate] (22.943 ms) : 0, 22943
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (833.36 ms) : 0, 833360
BytebuddyAgent [candidate] (831.907 ms) : 0, 831907
GlobalTracer [baseline] (230.614 ms) : 0, 230614
GlobalTracer [candidate] (233.45 ms) : 0, 233450
AppSec [baseline] (52.455 ms) : 0, 52455
AppSec [candidate] (53.871 ms) : 0, 53871
Remote Config [baseline] (611.485 µs) : 0, 611
Remote Config [candidate] (618.804 µs) : 0, 619
Telemetry [baseline] (8.62 ms) : 0, 8620
Telemetry [candidate] (8.624 ms) : 0, 8624
IAST [baseline] (26.983 ms) : 0, 26983
IAST [candidate] (25.368 ms) : 0, 25368
Startup time reports for petclinicgantt
title petclinic - global startup overhead: candidate=1.47.0-SNAPSHOT~62c40a3a4c, baseline=1.47.0-SNAPSHOT~cb1d8ed79d
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.037 s) : 0, 1036696
Total [baseline] (10.386 s) : 0, 10385532
Agent [candidate] (1.047 s) : 0, 1047231
Total [candidate] (10.514 s) : 0, 10514399
section appsec
Agent [baseline] (1.185 s) : 0, 1185212
Total [baseline] (10.75 s) : 0, 10750192
Agent [candidate] (1.191 s) : 0, 1190551
Total [candidate] (10.753 s) : 0, 10753392
section iast
Agent [baseline] (1.17 s) : 0, 1169606
Total [baseline] (11.076 s) : 0, 11076420
Agent [candidate] (1.172 s) : 0, 1172092
Total [candidate] (11.028 s) : 0, 11028282
section profiling
Agent [baseline] (1.259 s) : 0, 1259494
Total [baseline] (10.821 s) : 0, 10820640
Agent [candidate] (1.269 s) : 0, 1269004
Total [candidate] (10.923 s) : 0, 10923169
gantt
title petclinic - break down per module: candidate=1.47.0-SNAPSHOT~62c40a3a4c, baseline=1.47.0-SNAPSHOT~cb1d8ed79d
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (715.703 ms) : 0, 715703
BytebuddyAgent [candidate] (720.63 ms) : 0, 720630
GlobalTracer [baseline] (238.302 ms) : 0, 238302
GlobalTracer [candidate] (244.274 ms) : 0, 244274
AppSec [baseline] (55.643 ms) : 0, 55643
AppSec [candidate] (55.502 ms) : 0, 55502
Remote Config [baseline] (693.872 µs) : 0, 694
Remote Config [candidate] (718.057 µs) : 0, 718
Telemetry [baseline] (11.406 ms) : 0, 11406
Telemetry [candidate] (10.838 ms) : 0, 10838
section appsec
BytebuddyAgent [baseline] (736.744 ms) : 0, 736744
BytebuddyAgent [candidate] (737.419 ms) : 0, 737419
GlobalTracer [baseline] (236.648 ms) : 0, 236648
GlobalTracer [candidate] (241.226 ms) : 0, 241226
AppSec [baseline] (177.208 ms) : 0, 177208
AppSec [candidate] (176.736 ms) : 0, 176736
Remote Config [baseline] (655.733 µs) : 0, 656
Remote Config [candidate] (657.749 µs) : 0, 658
Telemetry [baseline] (8.284 ms) : 0, 8284
Telemetry [candidate] (8.259 ms) : 0, 8259
IAST [baseline] (21.284 ms) : 0, 21284
IAST [candidate] (21.932 ms) : 0, 21932
section iast
BytebuddyAgent [baseline] (834.478 ms) : 0, 834478
BytebuddyAgent [candidate] (834.511 ms) : 0, 834511
GlobalTracer [baseline] (229.773 ms) : 0, 229773
GlobalTracer [candidate] (233.086 ms) : 0, 233086
AppSec [baseline] (57.648 ms) : 0, 57648
AppSec [candidate] (57.08 ms) : 0, 57080
Remote Config [baseline] (626.636 µs) : 0, 627
Remote Config [candidate] (620.056 µs) : 0, 620
Telemetry [baseline] (8.876 ms) : 0, 8876
Telemetry [candidate] (8.744 ms) : 0, 8744
IAST [baseline] (23.227 ms) : 0, 23227
IAST [candidate] (22.805 ms) : 0, 22805
section profiling
BytebuddyAgent [baseline] (707.761 ms) : 0, 707761
BytebuddyAgent [candidate] (711.311 ms) : 0, 711311
GlobalTracer [baseline] (350.261 ms) : 0, 350261
GlobalTracer [candidate] (354.729 ms) : 0, 354729
AppSec [baseline] (55.591 ms) : 0, 55591
AppSec [candidate] (54.632 ms) : 0, 54632
Remote Config [baseline] (675.206 µs) : 0, 675
Remote Config [candidate] (704.056 µs) : 0, 704
Telemetry [baseline] (8.98 ms) : 0, 8980
Telemetry [candidate] (8.914 ms) : 0, 8914
ProfilingAgent [baseline] (96.061 ms) : 0, 96061
ProfilingAgent [candidate] (96.234 ms) : 0, 96234
Profiling [baseline] (96.086 ms) : 0, 96086
Profiling [candidate] (96.259 ms) : 0, 96259
LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 16 unstable metrics. Request duration reports for insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.47.0-SNAPSHOT~62c40a3a4c, baseline=1.47.0-SNAPSHOT~cb1d8ed79d
dateFormat X
axisFormat %s
section baseline
no_agent (386.763 µs) : 367, 406
. : milestone, 387,
iast (514.208 µs) : 493, 536
. : milestone, 514,
iast_FULL (731.172 µs) : 709, 753
. : milestone, 731,
iast_GLOBAL (561.335 µs) : 539, 583
. : milestone, 561,
iast_HARDCODED_SECRET_DISABLED (515.184 µs) : 494, 537
. : milestone, 515,
iast_INACTIVE (465.995 µs) : 445, 487
. : milestone, 466,
iast_TELEMETRY_OFF (509.394 µs) : 486, 533
. : milestone, 509,
tracing (459.611 µs) : 438, 481
. : milestone, 460,
section candidate
no_agent (381.395 µs) : 361, 402
. : milestone, 381,
iast (512.334 µs) : 490, 534
. : milestone, 512,
iast_FULL (740.268 µs) : 718, 762
. : milestone, 740,
iast_GLOBAL (563.352 µs) : 541, 586
. : milestone, 563,
iast_HARDCODED_SECRET_DISABLED (506.888 µs) : 485, 528
. : milestone, 507,
iast_INACTIVE (465.931 µs) : 444, 487
. : milestone, 466,
iast_TELEMETRY_OFF (503.227 µs) : 481, 526
. : milestone, 503,
tracing (458.662 µs) : 437, 480
. : milestone, 459,
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.47.0-SNAPSHOT~62c40a3a4c, baseline=1.47.0-SNAPSHOT~cb1d8ed79d
dateFormat X
axisFormat %s
section baseline
no_agent (1.351 ms) : 1331, 1371
. : milestone, 1351,
appsec (1.749 ms) : 1725, 1773
. : milestone, 1749,
appsec_no_iast (1.772 ms) : 1748, 1796
. : milestone, 1772,
iast (1.507 ms) : 1483, 1531
. : milestone, 1507,
profiling (1.545 ms) : 1520, 1571
. : milestone, 1545,
tracing (1.493 ms) : 1469, 1517
. : milestone, 1493,
section candidate
no_agent (1.359 ms) : 1340, 1378
. : milestone, 1359,
appsec (1.753 ms) : 1730, 1777
. : milestone, 1753,
appsec_no_iast (1.744 ms) : 1720, 1767
. : milestone, 1744,
iast (1.505 ms) : 1481, 1530
. : milestone, 1505,
profiling (1.527 ms) : 1502, 1552
. : milestone, 1527,
tracing (1.488 ms) : 1463, 1513
. : milestone, 1488,
DacapoParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 12 metrics, 0 unstable metrics. Execution time for biojavagantt
title biojava - execution time [CI 0.99] : candidate=1.47.0-SNAPSHOT~62c40a3a4c, baseline=1.47.0-SNAPSHOT~cb1d8ed79d
dateFormat X
axisFormat %s
section baseline
no_agent (14.879 s) : 14879000, 14879000
. : milestone, 14879000,
appsec (14.926 s) : 14926000, 14926000
. : milestone, 14926000,
iast (19.101 s) : 19101000, 19101000
. : milestone, 19101000,
iast_GLOBAL (17.822 s) : 17822000, 17822000
. : milestone, 17822000,
profiling (14.965 s) : 14965000, 14965000
. : milestone, 14965000,
tracing (14.968 s) : 14968000, 14968000
. : milestone, 14968000,
section candidate
no_agent (15.231 s) : 15231000, 15231000
. : milestone, 15231000,
appsec (14.903 s) : 14903000, 14903000
. : milestone, 14903000,
iast (18.58 s) : 18580000, 18580000
. : milestone, 18580000,
iast_GLOBAL (18.081 s) : 18081000, 18081000
. : milestone, 18081000,
profiling (14.963 s) : 14963000, 14963000
. : milestone, 14963000,
tracing (15.014 s) : 15014000, 15014000
. : milestone, 15014000,
Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.47.0-SNAPSHOT~62c40a3a4c, baseline=1.47.0-SNAPSHOT~cb1d8ed79d
dateFormat X
axisFormat %s
section baseline
no_agent (1.477 ms) : 1465, 1488
. : milestone, 1477,
appsec (2.363 ms) : 2319, 2406
. : milestone, 2363,
iast (2.113 ms) : 2058, 2169
. : milestone, 2113,
iast_GLOBAL (2.161 ms) : 2106, 2216
. : milestone, 2161,
profiling (1.981 ms) : 1937, 2026
. : milestone, 1981,
tracing (1.945 ms) : 1903, 1987
. : milestone, 1945,
section candidate
no_agent (1.477 ms) : 1465, 1489
. : milestone, 1477,
appsec (2.353 ms) : 2309, 2396
. : milestone, 2353,
iast (2.112 ms) : 2057, 2167
. : milestone, 2112,
iast_GLOBAL (2.157 ms) : 2102, 2213
. : milestone, 2157,
profiling (1.976 ms) : 1932, 2019
. : milestone, 1976,
tracing (1.942 ms) : 1900, 1984
. : milestone, 1942,
|
b3ef438
to
b08db2d
Compare
when a class is loaded we are now locating the jar containing the class and push the jar to a queue to be scanned by a background thread like for the initial process of SymDB enablement Add more information into SymDB report of total class count processed total jars scanned and histogram of class count by scanned jar
b08db2d
to
144ab64
Compare
Hi! 👋 Thanks for your pull request! 🎉 To help us review it, please make sure to:
If you need help, please check our contributing guidelines. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks! I've added a few comments for discussion, nothing blocking from my end.
if (!jarsToScanQueue.contains(jarName)) { // filter out already queued jars | ||
LOGGER.debug("Queuing jar to scan: {}", jarPath); | ||
if (!jarsToScanQueue.offer(jarName)) { | ||
LOGGER.debug("jarToScan queue is full, skipping jar: {}", jarName); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are we going to re-try at some point? If we load another class from that jar I think. But then again, my feeling would be that most classes of a jar are loaded at the same time. 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clearly if the queue is full we will drop jars, but don't want to wait or retry here because we are on critical path for class loading, so we will slow down the user app.
private int totalClasses; | ||
// ClassNameTrie is not thread safe, All accesses must be protected by a lock | ||
private final ClassNameTrie.Builder loadedClasses = new ClassNameTrie.Builder(); | ||
private final Queue<String> jarsToScanQueue = new ArrayBlockingQueue<>(64); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These strings aren't very large and the processing is async, should we consider more capacity?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
64 unique not already processed jars in one shot seems already large to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will bump to 128
} | ||
} catch (IOException e) { | ||
symDBReport.addIOException(jarPath.toString(), e); | ||
throw new RuntimeException(e); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't this going to stop the thread? Should we log instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah yes good catch!
AgentTaskScheduler.INSTANCE.scheduleAtFixedRate( | ||
this::flushRemainingScopes, this, 0, 1, TimeUnit.SECONDS); | ||
scanJarsScheduled = | ||
AgentTaskScheduler.INSTANCE.scheduleAtFixedRate( | ||
this::scanQueuedJars, this, 0, 1, TimeUnit.SECONDS); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thinking about situations where there could be a lot of jars to scan in the middle of the execution of an application. I know that we're scanning a lot on startup, which I think is fine. If we suddenly have a large number of jarsToScan long after startup, this might induce non-negligible overhead. Maybe we should fan it out over time and scan one jar per second or some such?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's an interesting topic. Mot sure how bad it could be and the impact. probably IO is the dominant thing and not CPU therefore the problem does not exist.
I think we will see in time. But thanks to bring this issue.
|
||
void report(); | ||
|
||
SymDBReport NO_OP = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So by the usage of the NO_OP report, I assume we only want a symdb report on the initial scan, not on the continuous ones? I think it might be cool if we had a periodic report as well. Not required, just nice to have.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes I focus on the initial process. It would be interesting to have it periodically, but not sure if relevant right now as the usage of logs in the wild is pretty heterogeneous.
will consider it if we still have issues with the coutnuous scan process
bump jarsToScanQueue capacity
| Package | Type | Package file | Manager | Update | Change | |---|---|---|---|---|---| | [com.datadoghq:dd-trace-api](https://github.com/datadog/dd-trace-java) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `1.46.1` -> `1.47.0` | | [com.datadoghq:dd-trace-ot](https://github.com/datadog/dd-trace-java) | dependencies | misk/gradle/libs.versions.toml | gradle | minor | `1.46.1` -> `1.47.0` | | [software.amazon.awssdk:sdk-core](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.33` -> `2.30.34` | | [software.amazon.awssdk:sqs](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.33` -> `2.30.34` | | [software.amazon.awssdk:dynamodb-enhanced](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.33` -> `2.30.34` | | [software.amazon.awssdk:dynamodb](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.33` -> `2.30.34` | | [software.amazon.awssdk:aws-core](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.33` -> `2.30.34` | | [software.amazon.awssdk:bom](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.33` -> `2.30.34` | | [software.amazon.awssdk:auth](https://aws.amazon.com/sdkforjava) | dependencies | misk/gradle/libs.versions.toml | gradle | patch | `2.30.33` -> `2.30.34` | --- ### Release Notes <details> <summary>datadog/dd-trace-java (com.datadoghq:dd-trace-api)</summary> ### [`v1.47.0`](https://github.com/DataDog/dd-trace-java/releases/tag/v1.47.0): 1.47.0 ##### Components ##### Application Security Management (IAST) - 🐛 Exclude com.stripe.net.HttpURLConnectionClient to solve IAST SSRF vulnerability false positives ([#​8483](DataDog/dd-trace-java#8483) - [@​jandro996](https://github.com/jandro996)) - 🐛 Add exclusion to solve IAST weak randomness vulnerability false positives ([#​8462](DataDog/dd-trace-java#8462) - [@​jandro996](https://github.com/jandro996)) - ✨ Fix weak randomness false positive in Kafka client ([#​8408](DataDog/dd-trace-java#8408) - [@​smola](https://github.com/smola)) - ✨ Fix location for SSRF with Kong Unirest ([#​8407](DataDog/dd-trace-java#8407) - [@​smola](https://github.com/smola)) - ✨ Exclude IBM Instana from IAST ([#​8406](DataDog/dd-trace-java#8406) - [@​smola](https://github.com/smola)) - 🐛 Fix org.json iast instrumentation test for latest dependency ([#​8347](DataDog/dd-trace-java#8347) - [@​jandro996](https://github.com/jandro996)) - ✨ Configuration to Disable APM Tracing ([#​8219](DataDog/dd-trace-java#8219) - [@​jandro996](https://github.com/jandro996)) - ✨ Address cookie vulnerability cardinality issues ([#​8210](DataDog/dd-trace-java#8210) - [@​jandro996](https://github.com/jandro996)) - ✨ Email HTML Injection detection in IAST ([#​8205](DataDog/dd-trace-java#8205) - [@​sezen-datadog](https://github.com/sezen-datadog)) ##### Application Security Management (WAF) - 🐛✨ Ensure usr.exists tag is not overridden when UsernameNotFoundException is thrown ([#​8376](DataDog/dd-trace-java#8376) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - 🐛✨ Ensure usr.exists tag is not overridden by auto instrumentation ([#​8374](DataDog/dd-trace-java#8374) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Update appsec metrics with event_rules_version tag ([#​8354](DataDog/dd-trace-java#8354) - [@​sezen-datadog](https://github.com/sezen-datadog)) - ✨ Update metrics: appsec.waf.requests ([#​8353](DataDog/dd-trace-java#8353) - [@​Mariovido](https://github.com/Mariovido)) - ✨ Improve ASM support in vert.x 5.0 ([#​8285](DataDog/dd-trace-java#8285) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Update metrics: appsec.waf.updates and appsec.waf.init ([#​8280](DataDog/dd-trace-java#8280) - [@​Mariovido](https://github.com/Mariovido)) - ✨ Configuration to Disable APM Tracing ([#​8219](DataDog/dd-trace-java#8219) - [@​jandro996](https://github.com/jandro996)) ##### Build & Tooling - 🐛 Do not generate Muzzle references for primitive arrays in method body ([#​8361](DataDog/dd-trace-java#8361) - [@​amarziali](https://github.com/amarziali)) - 📖 Improve dev env setup documentation for Windows ([#​8180](DataDog/dd-trace-java#8180) - [@​lucaspimentel](https://github.com/lucaspimentel)) ##### Continuous Integration Visibility - ✨ Add support for skip-EFD tagging ([#​8487](DataDog/dd-trace-java#8487) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Fix an NPE in Gradle Android instrumentation ([#​8484](DataDog/dd-trace-java#8484) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Consider modified tests when applying fail-fast tests ordering ([#​8474](DataDog/dd-trace-java#8474) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Implement tests reordering for TestNG ([#​8467](DataDog/dd-trace-java#8467) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Fix Gradle Launcher instrumentation to not interfere with Gradle Test Kit ([#​8465](DataDog/dd-trace-java#8465) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🧹 Use separate TestEventHandlers per framework in CI Vis instrumentations ([#​8451](DataDog/dd-trace-java#8451) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Remove warning log when JUnit 4 test method cannot be retrieved ([#​8445](DataDog/dd-trace-java#8445) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Fix Scalatest tracing for tests that are reported asynchronously ([#​8444](DataDog/dd-trace-java#8444) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Implement attempt to fix tests ([#​8393](DataDog/dd-trace-java#8393) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Implement test disabling ([#​8377](DataDog/dd-trace-java#8377) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Update CODEOWNERS parser to not log errors on comments with leading whitespace ([#​8349](DataDog/dd-trace-java#8349) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Request Test Management tests list ([#​8345](DataDog/dd-trace-java#8345) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Receive test management settings from CIVis settings request ([#​8331](DataDog/dd-trace-java#8331) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Implement quarantined tests tagging ([#​8326](DataDog/dd-trace-java#8326) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Implement tests quarantining ([#​8320](DataDog/dd-trace-java#8320) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Add tag to specify if the user is setting DD_SERVICE ([#​8318](DataDog/dd-trace-java#8318) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) ##### Crash tracking - ✨ Only fork jps when required ([#​8419](DataDog/dd-trace-java#8419) - [@​mcculls](https://github.com/mcculls)) - 🐛 Use Java home of the crashed process to launch crash uploader ([#​8348](DataDog/dd-trace-java#8348) - [@​jbachorik](https://github.com/jbachorik)) ##### Data Streams Monitoring - 🐛 Fix error happening when sqs message attributes are readonly ([#​8473](DataDog/dd-trace-java#8473) - [@​vandonr](https://github.com/vandonr)) - 🐛 Fix bug on proto schema extraction ([#​8403](DataDog/dd-trace-java#8403) - [@​vandonr](https://github.com/vandonr)) - 🐛 Fix service name overrides in consumers ([#​8387](DataDog/dd-trace-java#8387) - [@​piochelepiotr](https://github.com/piochelepiotr)) ##### Database Monitoring - ✨ Add DBMTracePreparedStatements to tracer configuration log ([#​8508](DataDog/dd-trace-java#8508) - [@​cecile75](https://github.com/cecile75)) ##### Dynamic Instrumentation - ✨ Look in another location for grpc service methods ([#​8468](DataDog/dd-trace-java#8468) - [@​evanchooly](https://github.com/evanchooly)) - 🐛 Fix Exception Replay with Lambda proxy classes ([#​8452](DataDog/dd-trace-java#8452) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Add code origin support for spring-webmvc ([#​8416](DataDog/dd-trace-java#8416) - [@​evanchooly](https://github.com/evanchooly)) - ✨ Add support for scanning jar from loaded class ([#​8370](DataDog/dd-trace-java#8370) - [@​jpbempel](https://github.com/jpbempel)) - 🐛 Disable capture of entry values ([#​8369](DataDog/dd-trace-java#8369) - [@​jpbempel](https://github.com/jpbempel)) - 🐛 Fix CodeOrigin for `@Trace` annotation ([#​8344](DataDog/dd-trace-java#8344) - [@​jpbempel](https://github.com/jpbempel)) - 🐛 Fix equals/hashCode for CodeOrigin probe ([#​8319](DataDog/dd-trace-java#8319) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Add code origin support to kafka message listeners ([#​8301](DataDog/dd-trace-java#8301) - [@​evanchooly](https://github.com/evanchooly)) ##### Metrics - ✨ Create metric: appsec.waf.error ([#​8381](DataDog/dd-trace-java#8381) - [@​sezen-datadog](https://github.com/sezen-datadog)) - ✨ Create metric: appsec.rasp.error ([#​8364](DataDog/dd-trace-java#8364) - [@​sezen-datadog](https://github.com/sezen-datadog)) ##### Profiling - ✨ Bump ddprof library to 1.22.0 ([#​8463](DataDog/dd-trace-java#8463) - [@​jbachorik](https://github.com/jbachorik)) - IBM J9 8u361 corresponds to OpenJDK 8u362 by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#187 - Fix compatibility with musl libc 1.2.4 by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#189 - Modify version extraction by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#179 - Do not write null values to jvminfo event by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#184 - Productize VMStructs-based stack walker by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#177 - A few minor downport issues by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#180 - Enable ASGCT by default on fairly safe J9 JDK versions by [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#181 - 🐛 Exclude OrderedThreadPoolExecutor from queue-time measurements ([#​8456](DataDog/dd-trace-java#8456) - [@​jbachorik](https://github.com/jbachorik)) - ✨ Record JVM info on JVMs without JFR ([#​8431](DataDog/dd-trace-java#8431) - [@​jbachorik](https://github.com/jbachorik)) - 🐛 Actually use CleanupTask in TempLocationManager ([#​8420](DataDog/dd-trace-java#8420) - [@​mcculls](https://github.com/mcculls)) - ✨ Only fork jps when required ([#​8419](DataDog/dd-trace-java#8419) - [@​mcculls](https://github.com/mcculls)) - 🐛 Adjust JFR checks for J9 ([#​8405](DataDog/dd-trace-java#8405) - [@​jbachorik](https://github.com/jbachorik)) - 🧹 Disable smap RSS parsing by default ([#​8342](DataDog/dd-trace-java#8342) - [@​MattAlp](https://github.com/MattAlp)) ##### Telemetry - 🐛 Add support for JBoss jar:file format to DependencyResolver ([#​8428](DataDog/dd-trace-java#8428) - [@​jandro996](https://github.com/jandro996)) - ✨ Update metrics: appsec.waf.requests ([#​8353](DataDog/dd-trace-java#8353) - [@​Mariovido](https://github.com/Mariovido)) ##### Trace context propagation - ✨ Introduce tracing propagator ([#​8313](DataDog/dd-trace-java#8313) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) ##### Tracer core - 🐛 Fix Stable Config telemetry source names ([#​8460](DataDog/dd-trace-java#8460) - [@​BaptisteFoy](https://github.com/BaptisteFoy)) - ✨ Probe trace endpoints with a valid payload of empty arrays ([#​8414](DataDog/dd-trace-java#8414) - [@​mcculls](https://github.com/mcculls)) - ✨ Add 1 minute fail-safe to JUL/JMX class-loading callback ([#​8399](DataDog/dd-trace-java#8399) - [@​mcculls](https://github.com/mcculls)) - ✨ Migrate DSM injection calls to context-first APIs ([#​8383](DataDog/dd-trace-java#8383) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) - 🧹 Move continuation capture methods from scope to tracer ([#​8371](DataDog/dd-trace-java#8371) - [@​mcculls](https://github.com/mcculls)) - ✨ Migrate context extraction calls to context-first APIs ([#​8368](DataDog/dd-trace-java#8368) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) - 🧹 Migrate context injection calls to context-first APIs ([#​8358](DataDog/dd-trace-java#8358) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) - 💡 Support reading configurations from files ([#​8338](DataDog/dd-trace-java#8338) - [@​mtoffl01](https://github.com/mtoffl01)) - 💡 Implementation of BaggagePropagator and BaggageContext ([#​8330](DataDog/dd-trace-java#8330) - [@​mhlidd](https://github.com/mhlidd)) - 🧹 Combine continuation implementations into one which supports multiple activations ([#​8324](DataDog/dd-trace-java#8324) - [@​mcculls](https://github.com/mcculls)) - ✨ Introduce tracing propagator ([#​8313](DataDog/dd-trace-java#8313) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) - ✨ Remove old context propagation API ([#​8271](DataDog/dd-trace-java#8271) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) ##### Instrumentations ##### AWS Lambda instrumentation - 🐛 Send error message and stack to Lambda extension ([#​8417](DataDog/dd-trace-java#8417) - [@​nhulston](https://github.com/nhulston)) ##### AWS SDK instrumentation - 🐛 Fix error happening when sqs message attributes are readonly ([#​8473](DataDog/dd-trace-java#8473) - [@​vandonr](https://github.com/vandonr)) - 💡 Inject trace context into AWS Step Functions input ([#​7585](DataDog/dd-trace-java#7585) - [@​DylanLovesCoffee](https://github.com/DylanLovesCoffee)) ##### Core Java language instrumentation - ✨ Look in another location for grpc service methods ([#​8468](DataDog/dd-trace-java#8468) - [@​evanchooly](https://github.com/evanchooly)) - ✨ Add code origin support for spring-webmvc ([#​8416](DataDog/dd-trace-java#8416) - [@​evanchooly](https://github.com/evanchooly)) - 💡 Implementation of BaggagePropagator and BaggageContext ([#​8330](DataDog/dd-trace-java#8330) - [@​mhlidd](https://github.com/mhlidd)) - ✨ Add code origin support to kafka message listeners ([#​8301](DataDog/dd-trace-java#8301) - [@​evanchooly](https://github.com/evanchooly)) ##### gRPC instrumentation - ✨ Look in another location for grpc service methods ([#​8468](DataDog/dd-trace-java#8468) - [@​evanchooly](https://github.com/evanchooly)) ##### Kafka instrumentation - ✨ Add messaging.destination.name tag to kafka integrations ([#​8366](DataDog/dd-trace-java#8366) - [@​rarguelloF](https://github.com/rarguelloF)) ##### Protocol Buffer instrumentation - 🐛 Fix bug on proto schema extraction ([#​8403](DataDog/dd-trace-java#8403) - [@​vandonr](https://github.com/vandonr)) </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: 108a0f86aa59ab4c938cbac0688dd4c19cb301fa
What Does This Do
when a class is loaded we are now locating the jar containing the
class and push the jar to a queue to be scanned by a background thread
like for the initial process of SymDB enablement
Add more information into SymDB report of total class count processed
total jars scanned and histogram of class count by scanned jar
Motivation
Additional Notes
Contributor Checklist
type:
and (comp:
orinst:
) labels in addition to any usefull labelsclose
,fix
or any linking keywords when referencing an issue.Use
solves
instead, and assign the PR milestone to the issueJira ticket: [PROJ-IDENT]