- Notifications
You must be signed in to change notification settings - Fork 313
Instrument Java Websocket API (JSR356) #8440
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
...et-1.0/src/main/java/datadog/trace/instrumentation/websocket/jsr256/TracingOutputStream.java Show resolved Hide resolved
...ebsocket-1.0/src/main/java/datadog/trace/instrumentation/websocket/jsr256/TracingWriter.java Show resolved Hide resolved
...trap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/WebsocketDecorator.java Show resolved Hide resolved
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 56 metrics, 7 unstable metrics. Startup time reports for petclinicgantt title petclinic - global startup overhead: candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601 dateFormat X axisFormat %s section tracing Agent [baseline] (1.049 s) : 0, 1049328 Total [baseline] (10.492 s) : 0, 10492142 Agent [candidate] (1.046 s) : 0, 1046224 Total [candidate] (10.429 s) : 0, 10428702 section appsec Agent [baseline] (1.188 s) : 0, 1188332 Total [baseline] (10.716 s) : 0, 10715651 Agent [candidate] (1.186 s) : 0, 1185783 Total [candidate] (10.735 s) : 0, 10734597 section iast Agent [baseline] (1.194 s) : 0, 1193895 Total [baseline] (10.973 s) : 0, 10973498 Agent [candidate] (1.171 s) : 0, 1171062 Total [candidate] (11.078 s) : 0, 11078275 section profiling Agent [baseline] (1.263 s) : 0, 1262744 Total [baseline] (10.844 s) : 0, 10844474 Agent [candidate] (1.265 s) : 0, 1265263 Total [candidate] (10.81 s) : 0, 10809511
gantt title petclinic - break down per module: candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601 dateFormat X axisFormat %s section tracing BytebuddyAgent [baseline] (723.37 ms) : 0, 723370 BytebuddyAgent [candidate] (723.217 ms) : 0, 723217 GlobalTracer [baseline] (240.971 ms) : 0, 240971 GlobalTracer [candidate] (239.704 ms) : 0, 239704 AppSec [baseline] (55.333 ms) : 0, 55333 AppSec [candidate] (55.422 ms) : 0, 55422 Remote Config [baseline] (716.565 µs) : 0, 717 Remote Config [candidate] (703.652 µs) : 0, 704 Telemetry [baseline] (13.944 ms) : 0, 13944 Telemetry [candidate] (12.231 ms) : 0, 12231 section appsec BytebuddyAgent [baseline] (738.995 ms) : 0, 738995 BytebuddyAgent [candidate] (738.375 ms) : 0, 738375 GlobalTracer [baseline] (237.366 ms) : 0, 237366 GlobalTracer [candidate] (236.553 ms) : 0, 236553 AppSec [baseline] (176.939 ms) : 0, 176939 AppSec [candidate] (176.113 ms) : 0, 176113 Remote Config [baseline] (670.97 µs) : 0, 671 Remote Config [candidate] (682.14 µs) : 0, 682 Telemetry [baseline] (8.665 ms) : 0, 8665 Telemetry [candidate] (8.38 ms) : 0, 8380 IAST [baseline] (21.606 ms) : 0, 21606 IAST [candidate] (21.475 ms) : 0, 21475 section iast BytebuddyAgent [baseline] (855.13 ms) : 0, 855130 BytebuddyAgent [candidate] (837.088 ms) : 0, 837088 GlobalTracer [baseline] (233.431 ms) : 0, 233431 GlobalTracer [candidate] (230.387 ms) : 0, 230387 AppSec [baseline] (57.283 ms) : 0, 57283 AppSec [candidate] (55.888 ms) : 0, 55888 Remote Config [baseline] (629.959 µs) : 0, 630 Remote Config [candidate] (631.118 µs) : 0, 631 Telemetry [baseline] (8.833 ms) : 0, 8833 Telemetry [candidate] (8.768 ms) : 0, 8768 IAST [baseline] (23.365 ms) : 0, 23365 IAST [candidate] (23.383 ms) : 0, 23383 section profiling ProfilingAgent [baseline] (97.28 ms) : 0, 97280 ProfilingAgent [candidate] (96.65 ms) : 0, 96650 BytebuddyAgent [baseline] (709.767 ms) : 0, 709767 BytebuddyAgent [candidate] (712.628 ms) : 0, 712628 GlobalTracer [baseline] (350.423 ms) : 0, 350423 GlobalTracer [candidate] (351.717 ms) : 0, 351717 AppSec [baseline] (55.1 ms) : 0, 55100 AppSec [candidate] (54.081 ms) : 0, 54081 Remote Config [baseline] (688.02 µs) : 0, 688 Remote Config [candidate] (672.501 µs) : 0, 673 Telemetry [baseline] (9.001 ms) : 0, 9001 Telemetry [candidate] (8.954 ms) : 0, 8954 Profiling [baseline] (97.305 ms) : 0, 97305 Profiling [candidate] (96.677 ms) : 0, 96677 Startup time reports for insecure-bankgantt title insecure-bank - global startup overhead: candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601 dateFormat X axisFormat %s section tracing Agent [baseline] (1.04 s) : 0, 1039824 Total [baseline] (8.662 s) : 0, 8661913 Agent [candidate] (1.046 s) : 0, 1046273 Total [candidate] (8.697 s) : 0, 8696938 section iast Agent [baseline] (1.173 s) : 0, 1172608 Total [baseline] (9.221 s) : 0, 9220718 Agent [candidate] (1.177 s) : 0, 1176620 Total [candidate] (9.26 s) : 0, 9259802 section iast_HARDCODED_SECRET_DISABLED Agent [baseline] (1.175 s) : 0, 1174887 Total [baseline] (9.221 s) : 0, 9221237 Agent [candidate] (1.173 s) : 0, 1173015 Total [candidate] (9.152 s) : 0, 9151745 section iast_TELEMETRY_OFF Agent [baseline] (1.176 s) : 0, 1176153 Total [baseline] (9.239 s) : 0, 9238611 Agent [candidate] (1.176 s) : 0, 1175518 Total [candidate] (9.257 s) : 0, 9256836
gantt title insecure-bank - break down per module: candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601 dateFormat X axisFormat %s section tracing BytebuddyAgent [baseline] (717.941 ms) : 0, 717941 BytebuddyAgent [candidate] (722.869 ms) : 0, 722869 GlobalTracer [baseline] (239.692 ms) : 0, 239692 GlobalTracer [candidate] (239.184 ms) : 0, 239184 AppSec [baseline] (55.373 ms) : 0, 55373 AppSec [candidate] (55.074 ms) : 0, 55074 Remote Config [baseline] (700.15 µs) : 0, 700 Remote Config [candidate] (696.743 µs) : 0, 697 Telemetry [baseline] (11.331 ms) : 0, 11331 Telemetry [candidate] (13.523 ms) : 0, 13523 section iast BytebuddyAgent [baseline] (838.149 ms) : 0, 838149 BytebuddyAgent [candidate] (841.495 ms) : 0, 841495 GlobalTracer [baseline] (230.583 ms) : 0, 230583 GlobalTracer [candidate] (231.352 ms) : 0, 231352 IAST [baseline] (22.82 ms) : 0, 22820 IAST [candidate] (23.568 ms) : 0, 23568 AppSec [baseline] (56.804 ms) : 0, 56804 AppSec [candidate] (56.015 ms) : 0, 56015 Remote Config [baseline] (616.007 µs) : 0, 616 Remote Config [candidate] (625.884 µs) : 0, 626 Telemetry [baseline] (8.726 ms) : 0, 8726 Telemetry [candidate] (8.716 ms) : 0, 8716 section iast_HARDCODED_SECRET_DISABLED BytebuddyAgent [baseline] (837.443 ms) : 0, 837443 BytebuddyAgent [candidate] (838.654 ms) : 0, 838654 GlobalTracer [baseline] (232.264 ms) : 0, 232264 GlobalTracer [candidate] (230.689 ms) : 0, 230689 IAST [baseline] (23.353 ms) : 0, 23353 IAST [candidate] (22.966 ms) : 0, 22966 AppSec [baseline] (57.444 ms) : 0, 57444 AppSec [candidate] (56.396 ms) : 0, 56396 Remote Config [baseline] (631.919 µs) : 0, 632 Remote Config [candidate] (605.039 µs) : 0, 605 Telemetry [baseline] (8.88 ms) : 0, 8880 Telemetry [candidate] (8.71 ms) : 0, 8710 section iast_TELEMETRY_OFF BytebuddyAgent [baseline] (840.273 ms) : 0, 840273 BytebuddyAgent [candidate] (840.591 ms) : 0, 840591 GlobalTracer [baseline] (231.724 ms) : 0, 231724 GlobalTracer [candidate] (231.041 ms) : 0, 231041 IAST [baseline] (22.767 ms) : 0, 22767 IAST [candidate] (22.552 ms) : 0, 22552 AppSec [baseline] (56.928 ms) : 0, 56928 AppSec [candidate] (56.998 ms) : 0, 56998 Remote Config [baseline] (634.544 µs) : 0, 635 Remote Config [candidate] (632.776 µs) : 0, 633 Telemetry [baseline] (8.722 ms) : 0, 8722 Telemetry [candidate] (8.68 ms) : 0, 8680 LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 14 metrics, 16 unstable metrics. Request duration reports for insecure-bankgantt title insecure-bank - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601 dateFormat X axisFormat %s section baseline no_agent (382.209 µs) : 362, 402 . : milestone, 382, iast (512.257 µs) : 490, 534 . : milestone, 512, iast_FULL (728.815 µs) : 707, 751 . : milestone, 729, iast_GLOBAL (552.886 µs) : 531, 575 . : milestone, 553, iast_HARDCODED_SECRET_DISABLED (512.166 µs) : 490, 534 . : milestone, 512, iast_INACTIVE (458.394 µs) : 438, 479 . : milestone, 458, iast_TELEMETRY_OFF (494.238 µs) : 472, 517 . : milestone, 494, tracing (460.098 µs) : 439, 481 . : milestone, 460, section candidate no_agent (384.529 µs) : 365, 405 . : milestone, 385, iast (512.229 µs) : 490, 534 . : milestone, 512, iast_FULL (729.069 µs) : 707, 751 . : milestone, 729, iast_GLOBAL (551.716 µs) : 530, 573 . : milestone, 552, iast_HARDCODED_SECRET_DISABLED (516.784 µs) : 494, 539 . : milestone, 517, iast_INACTIVE (458.071 µs) : 437, 479 . : milestone, 458, iast_TELEMETRY_OFF (497.255 µs) : 476, 519 . : milestone, 497, tracing (461.793 µs) : 441, 483 . : milestone, 462,
Request duration reports for petclinicgantt title petclinic - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601 dateFormat X axisFormat %s section baseline no_agent (1.355 ms) : 1335, 1376 . : milestone, 1355, appsec (1.733 ms) : 1710, 1757 . : milestone, 1733, appsec_no_iast (1.746 ms) : 1720, 1771 . : milestone, 1746, code_origins (1.69 ms) : 1658, 1723 . : milestone, 1690, iast (1.5 ms) : 1476, 1525 . : milestone, 1500, profiling (1.496 ms) : 1472, 1520 . : milestone, 1496, tracing (1.508 ms) : 1483, 1533 . : milestone, 1508, section candidate no_agent (1.34 ms) : 1320, 1360 . : milestone, 1340, appsec (1.731 ms) : 1708, 1755 . : milestone, 1731, appsec_no_iast (1.742 ms) : 1716, 1767 . : milestone, 1742, code_origins (1.673 ms) : 1640, 1707 . : milestone, 1673, iast (1.514 ms) : 1490, 1538 . : milestone, 1514, profiling (1.505 ms) : 1481, 1529 . : milestone, 1505, tracing (1.486 ms) : 1461, 1512 . : milestone, 1486,
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 tomcatgantt title tomcat - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601 dateFormat X axisFormat %s section baseline no_agent (1.478 ms) : 1466, 1489 . : milestone, 1478, appsec (2.355 ms) : 2311, 2399 . : milestone, 2355, iast (2.126 ms) : 2070, 2182 . : milestone, 2126, iast_GLOBAL (2.167 ms) : 2111, 2223 . : milestone, 2167, profiling (1.98 ms) : 1937, 2024 . : milestone, 1980, tracing (1.953 ms) : 1911, 1996 . : milestone, 1953, section candidate no_agent (1.476 ms) : 1465, 1488 . : milestone, 1476, appsec (2.354 ms) : 2310, 2398 . : milestone, 2354, iast (2.128 ms) : 2071, 2184 . : milestone, 2128, iast_GLOBAL (2.169 ms) : 2113, 2225 . : milestone, 2169, profiling (1.989 ms) : 1944, 2035 . : milestone, 1989, tracing (1.954 ms) : 1911, 1996 . : milestone, 1954,
Execution time for biojavagantt title biojava - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~978afb6bc8, baseline=1.48.0-SNAPSHOT~01d3277601 dateFormat X axisFormat %s section baseline no_agent (14.883 s) : 14883000, 14883000 . : milestone, 14883000, appsec (14.939 s) : 14939000, 14939000 . : milestone, 14939000, iast (18.908 s) : 18908000, 18908000 . : milestone, 18908000, iast_GLOBAL (18.104 s) : 18104000, 18104000 . : milestone, 18104000, profiling (15.626 s) : 15626000, 15626000 . : milestone, 15626000, tracing (15.004 s) : 15004000, 15004000 . : milestone, 15004000, section candidate no_agent (14.893 s) : 14893000, 14893000 . : milestone, 14893000, appsec (15.027 s) : 15027000, 15027000 . : milestone, 15027000, iast (18.564 s) : 18564000, 18564000 . : milestone, 18564000, iast_GLOBAL (18.04 s) : 18040000, 18040000 . : milestone, 18040000, profiling (15.011 s) : 15011000, 15011000 . : milestone, 15011000, tracing (15.115 s) : 15115000, 15115000 . : milestone, 15115000,
|
b017c7b
to 52d9691
Compare dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/LinksAssert.groovy Outdated Show resolved Hide resolved
dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/LinksAssert.groovy Show resolved Hide resolved
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.
There are a lot of changes in this PR 😅
I will have a closer look the public and internal API later this week.
542304a
to ab80d28
Compare 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.
Reviewed the API part and left some comments :)
Let me know if you need help with the OTel part.
private final Set<AgentSpanLink> assertedLinks = [] | ||
| ||
private LinksAssert(DDSpan span) { | ||
this.links = span.links // this is class protected but for the moment groovy can access it |
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.
Can it be left private
? Can’t groovy access them when private too?
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.
let me check it.
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.
Now I remember why. It does not work: (see that CI run)
It fails for
Caused by: groovy.lang.MissingPropertyException: No such property: links for class: datadog.trace.core.DDSpan$SpockMock$863262640
because that span it's got spied and then cannot be accessed if private. Any advice for it?
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.
Maybe just leave it as a comment with this reason.
private volatile int longRunningVersion = 0; | ||
| ||
private final List<AgentSpanLink> links; | ||
protected final List<AgentSpanLink> links; |
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.
Can it stay private
? -- see related comment in SpanLinkTest
internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/SpanLink.java Outdated Show resolved Hide resolved
assertTraces(1) { | ||
trace(1) { | ||
span { | ||
ignoreSpanLinks() // check is done on the content of the tag below |
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.
Do you need some help porting those checks?
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.
Thanks for proposing I don't refuse it :) I did this way mostly because here we wanted to check the serialized form so I just decided to skip them. Would you like to add the links
part on this test?
dd-java-agent/instrumentation/aws-java-s3-2.0/src/test/groovy/S3ClientTest.groovy Show resolved Hide resolved
dd-java-agent/instrumentation/aws-java-s3-2.0/src/test/groovy/S3ClientTest.groovy Show resolved Hide resolved
...n/jetty-9/src/main/java_jetty10/datadog/trace/instrumentation/jetty10/OnCompletedAdvice.java Outdated Show resolved Hide resolved
assert span.tags.containsKey(DDTags.SPAN_LINKS) | ||
assert span.tags[DDTags.SPAN_LINKS] != null | ||
links({ | ||
link(DDTraceId.from((long)12052652441736835200), (long)-6394091631972716416) |
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.
Magic numbers?
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 don't know where they come from 🤷 That trace ID is hardcoded somwhere so I had to hardcode it as well
...6.0/src/test/groovy/datadog/trace/instrumentation/springweb6/boot/SpringBootBasedTest.groovy Outdated Show resolved Hide resolved
...trap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/WebsocketDecorator.java Show resolved Hide resolved
...trap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/WebsocketDecorator.java Show resolved Hide resolved
...ootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/websocket/HandlerContext.java Show resolved Hide resolved
...ootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/websocket/HandlerContext.java Show resolved Hide resolved
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.
Congratulations on putting it all together! That's a big one! Great to see a lot of tests as well. Overall looks solid. I left a few notes for clarification.
cbd26e7
to 99e400b
Compare a947aef
to 700b1c3
Compare 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.
Looks good to me!
return s; | ||
} | ||
final CharSequence ret = s.subSequence(idx + 1, s.length()); | ||
if (ret.length() == 0) { |
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.
Can this case happen if idx == s.length() - 1
is already filtered above?
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.
yep right I can simplify
import jakarta.websocket.server.ServerEndpointConfig | ||
import java.nio.ByteBuffer | ||
| ||
class WebsocketTest extends AgentTestRunner { |
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.
Thanks for excluding random data from test case name! 🙇
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.
Looking good from the platform / api side! 🙌
700b1c3
to 978afb6
Compare | 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 ([#​8687](DataDog/dd-trace-java#8687) - [@​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 ([#​8610](DataDog/dd-trace-java#8610) - [@​jandro996](https://github.com/jandro996)) - ✨ Fix weak randomness in oracle.ucp.util.OpaqueString ([#​8609](DataDog/dd-trace-java#8609) - [@​jandro996](https://github.com/jandro996)) - ✨ Fix weak hash false positive in oracle.security.o5logon.O5Logon ([#​8608](DataDog/dd-trace-java#8608) - [@​jandro996](https://github.com/jandro996)) - 🐛 Prevent before callsites targeting constructors in super calls ([#​8549](DataDog/dd-trace-java#8549) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) #### Application Security Management (WAF) - ✨ Update login events public SDK to V2 ([#​8620](DataDog/dd-trace-java#8620) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - 🐛 Send RASP LFI capability only when AppSec is statically enabled ([#​8573](DataDog/dd-trace-java#8573) - [@​jandro996](https://github.com/jandro996)) - ✨ Improve detection of missing request end events ([#​8510](DataDog/dd-trace-java#8510) - [@​smola](https://github.com/smola)) - 🧹 Remove remote configuration for API Security sampling rate ([#​8486](DataDog/dd-trace-java#8486) - [@​smola](https://github.com/smola)) - ✨ Add setUser to user monitoring SDK ([#​8482](DataDog/dd-trace-java#8482) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Add missing address for signup event ([#​8469](DataDog/dd-trace-java#8469) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Allow login events SDK to be used with appsec disabled ([#​8464](DataDog/dd-trace-java#8464) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ Add support for endpoint discovery in spring mvc ([#​8352](DataDog/dd-trace-java#8352) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) - ✨ New API Security sampling algorithm ([#​8178](DataDog/dd-trace-java#8178) - [@​ValentinZakharov](https://github.com/ValentinZakharov)) #### Build & Tooling - ✨ Add buffer size customizability to JDK UDS support ([#​8629](DataDog/dd-trace-java#8629) - [@​sarahchen6](https://github.com/sarahchen6)) - ✨ Add JDK built-in support for UDS on Java 16+ ([#​8314](DataDog/dd-trace-java#8314) - [@​sarahchen6](https://github.com/sarahchen6)) #### Configuration at Runtime - 🐛 Send RASP LFI capability only when AppSec is statically enabled ([#​8573](DataDog/dd-trace-java#8573) - [@​jandro996](https://github.com/jandro996)) #### Continuous Integration Visibility - 🐛 Prevent double reporting of Scalatest events when using SBT with test forking ([#​8682](DataDog/dd-trace-java#8682) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Shutdown CI Visibility test event handlers before tracer ([#​8677](DataDog/dd-trace-java#8677) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Do not apply JUnit 4 instrumentation to MUnit runners ([#​8675](DataDog/dd-trace-java#8675), [#​8683](DataDog/dd-trace-java#8683) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Remove error log when source path resolution fails on isModified check ([#​8663](DataDog/dd-trace-java#8663) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Implement tests reordering for JUnit 4 ([#​8650](DataDog/dd-trace-java#8650) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - 🐛 Set default Attempt to Fix retries if none provided from the backend ([#​8615](DataDog/dd-trace-java#8615) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) - ✨ Allow to manually set PR info ([#​8566](DataDog/dd-trace-java#8566) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - 🐛 Fix Test Optimization init when repo root cannot be determined ([#​8533](DataDog/dd-trace-java#8533) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Add capabilities tagging ([#​8499](DataDog/dd-trace-java#8499), [#​8540](DataDog/dd-trace-java#8540) - [@​daniel-mohedano](https://github.com/daniel-mohedano)) #### Crash tracking - 🐛 Remove dependency on bash from crash/oome uploder scripts ([#​8652](DataDog/dd-trace-java#8652) - [@​jbachorik](https://github.com/jbachorik)) #### Data Streams Monitoring - ✨ e2e pipeline configuration when data jobs is enabled ([#​8553](DataDog/dd-trace-java#8553) - [@​kr-igor](https://github.com/kr-igor)) #### Dynamic Instrumentation - 🐛 Fix In-Product when config is empty ([#​8679](DataDog/dd-trace-java#8679) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Add support for filtering shaded third-party libs ([#​8612](DataDog/dd-trace-java#8612) - [@​jpbempel](https://github.com/jpbempel)) - ✨ Add In-Product Enablement ([#​8587](DataDog/dd-trace-java#8587) - [@​jpbempel](https://github.com/jpbempel)) - ✨⚡ Reduce footprint of SourceFile tracking ([#​8524](DataDog/dd-trace-java#8524) - [@​jpbempel](https://github.com/jpbempel)) - ✨⚡ Optimize the SourceFile tracking ([#​8520](DataDog/dd-trace-java#8520) - [@​jpbempel](https://github.com/jpbempel)) #### OpenTracing - 🧹 Remove activeScope() use in OpenTracing shim ([#​8478](DataDog/dd-trace-java#8478) - [@​mcculls](https://github.com/mcculls)) #### Profiling - ✨ Add profiler env check command to AgentCLI ([#​8671](DataDog/dd-trace-java#8671) - [@​jbachorik](https://github.com/jbachorik)) - ✨ Bump ddprof to 1.23.0 ([#​8668](DataDog/dd-trace-java#8668) - [@​jbachorik](https://github.com/jbachorik)) - Fix a crash related to ElfParser::loadSymbolTable ([#​191](DataDog/dd-trace-java#191)) by [@​yanglong1010](https://github.com/yanglong1010) in DataDog/java-profiler#192 - Unwind String.indexOf intrinsic on AArch64 by [@​MattAlp](https://github.com/MattAlp) in DataDog/java-profiler#193 - Fix Java 24 support by [@​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 [@​jbachorik](https://github.com/jbachorik) in DataDog/java-profiler#199 - 🐛 Remove process information from JFR recording ([#​8661](DataDog/dd-trace-java#8661) - [@​r1viollet](https://github.com/r1viollet)) - 🐛 Make TempLocationManager USER aware ([#​8605](DataDog/dd-trace-java#8605) - [@​jbachorik](https://github.com/jbachorik)) - ✨ Extract git tags from embedded git.properties and datadog_git.properties ([#​8561](DataDog/dd-trace-java#8561) - [@​wmouchere](https://github.com/wmouchere)) #### Telemetry - 🐛 Fix appsec.rasp.error and appsec.waf.error telemetry metrics ([#​8624](DataDog/dd-trace-java#8624) - [@​jandro996](https://github.com/jandro996)) - ✨ Create metric: appsec.rasp.rule.skipped ([#​8618](DataDog/dd-trace-java#8618) - [@​jandro996](https://github.com/jandro996)) - ✨ Extract git tags from embedded git.properties and datadog_git.properties ([#​8561](DataDog/dd-trace-java#8561) - [@​wmouchere](https://github.com/wmouchere)) #### Testing - 🧹 Simplify ssi tests one-pipeline ([#​8558](DataDog/dd-trace-java#8558) - [@​robertomonteromiguel](https://github.com/robertomonteromiguel)) - ✨ Add smoke tests for java's concurrent API ([#​8438](DataDog/dd-trace-java#8438) - [@​sarahchen6](https://github.com/sarahchen6)) #### Trace context propagation - ✨ Adding Support for `TRACE_PROPAGATION_BEHAVIOR_EXTRACT` ([#​8535](DataDog/dd-trace-java#8535) - [@​mhlidd](https://github.com/mhlidd)) #### Tracer core - 🐛 Ensure shaded helpers have unique names ([#​8559](DataDog/dd-trace-java#8559) - [@​amarziali](https://github.com/amarziali)) - ✨ Support common config sources for user-provided git info ([#​8547](DataDog/dd-trace-java#8547) - [@​nikita-tkachenko-datadog](https://github.com/nikita-tkachenko-datadog)) - ✨ Make the default config sources more robust when a security manager is installed ([#​8544](DataDog/dd-trace-java#8544) - [@​mcculls](https://github.com/mcculls)) - ✨ Support targeting services with configurations in stable configuration file ([#​8526](DataDog/dd-trace-java#8526) - [@​mtoffl01](https://github.com/mtoffl01)) - ✨ Add new parser for `DD_TAGS` and prioritizing `DD_SERVICE` ([#​8296](DataDog/dd-trace-java#8296) - [@​mhlidd](https://github.com/mhlidd)) #### Tracer internal logging - 🐛 Add missing debug log for the cloudPayloadTaggingServices config ([#​8600](DataDog/dd-trace-java#8600) - [@​ygree](https://github.com/ygree)) - ✨ Add the possibility to output the logs of the Java tracer in JSON ([#​8083](DataDog/dd-trace-java#8083) - [@​cecile75](https://github.com/cecile75)) #### Tracer public API - ✨ Introducing `DD_TRACE_EXPERIMENTAL_FEATURES_ENABLED` Config ([#​8536](DataDog/dd-trace-java#8536) - [@​mhlidd](https://github.com/mhlidd)) - ✨ Config Consistency Round 2 ([#​8489](DataDog/dd-trace-java#8489) - [@​mhlidd](https://github.com/mhlidd)) ### Instrumentations #### - 🐛 Fix NPE in getMdcCopy of LoggingEventInstrumentation ([#​8599](DataDog/dd-trace-java#8599) - [@​ygree](https://github.com/ygree)) #### Apache Spark instrumentation - ✨ Instrument Runtime.exit() to finish spark application spans ([#​8572](DataDog/dd-trace-java#8572) - [@​paul-laffon-dd](https://github.com/paul-laffon-dd)) - ✨ Configure OpenLineage if present in Spark instrumentation ([#​8541](DataDog/dd-trace-java#8541) - [@​mobuchowski](https://github.com/mobuchowski)) #### Armeria Instrumentation - ✨ Support armeria grpc 1.32.3 ([#​8606](DataDog/dd-trace-java#8606) - [@​github-actions](https://github.com/github-actions)\[bot]) #### AWS DynamoDB Instrumentation - ✨ Create DynamoDB instrumentation + add span pointers for `updateItem` and `deleteItem` ([#​8490](DataDog/dd-trace-java#8490) - [@​nhulston](https://github.com/nhulston)) #### AWS SDK instrumentation - ✨ Add DynamoDB in DEFAULT_TRACE_CLOUD_PAYLOAD_TAGGING_SERVICES ([#​8595](DataDog/dd-trace-java#8595) - [@​joeyzhao2018](https://github.com/joeyzhao2018)) #### Azure Functions instrumentation - ✨ Enable tracer computed trace metrics by default for Azure Functions ([#​8518](DataDog/dd-trace-java#8518) - [@​duncanpharvey](https://github.com/duncanpharvey)) - 💡 Add azure-functions instrumentation ([#​8432](DataDog/dd-trace-java#8432) - [@​duncanpharvey](https://github.com/duncanpharvey)) #### Core Java language instrumentation - 🐛 Fix ForkJoinPool.execute() instrumentation on Java 21+ ([#​8560](DataDog/dd-trace-java#8560) - [@​PerfectSlayer](https://github.com/PerfectSlayer)) #### Eclipse Vert.x instrumentation - ✨ Add vertx postgresql client instrumentation ([#​8471](DataDog/dd-trace-java#8471) - [@​vandonr](https://github.com/vandonr) - thanks for the contribution!) #### Kafka instrumentation - ✨ Support and test kafka-clients 4 ([#​8581](DataDog/dd-trace-java#8581) - [@​amarziali](https://github.com/amarziali)) #### Kotlin instrumentation - ✨ Avoid disconnected traces when using Kotlin flowOn ([#​8651](DataDog/dd-trace-java#8651) - [@​mcculls](https://github.com/mcculls)) #### OpenTelemetry instrumentation - 🧹 Migrate OtelContext wrapper to new internal Context API ([#​8645](DataDog/dd-trace-java#8645) - [@​mcculls](https://github.com/mcculls)) #### Spring instrumentation - 🐛 Support CompletableFuture on spring webmvc controllers ([#​8659](DataDog/dd-trace-java#8659) - [@​amarziali](https://github.com/amarziali)) - ✨ Add support for endpoint discovery in spring mvc ([#​8352](DataDog/dd-trace-java#8352) - [@​manuel-alvarez-alvarez](https://github.com/manuel-alvarez-alvarez)) #### WebSocket Instrumentation - ✨ Instrument Jetty websocket pojo ([#​8562](DataDog/dd-trace-java#8562) - [@​amarziali](https://github.com/amarziali)) - 💡 Instrument Java Websocket API (JSR356) ([#​8440](DataDog/dd-trace-java#8440) - [@​amarziali](https://github.com/amarziali)) #### All other instrumentations - ✨ Introduce cache for peer.hostname lookup ([#​8601](DataDog/dd-trace-java#8601) - [@​mcculls](https://github.com/mcculls)) - ✨ Support pekko http 1.1 ([#​8532](DataDog/dd-trace-java#8532) - [@​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
What Does This Do
Instrumenter module for
javax.websocket
andjakarta.websocket
APIs. Supports both client and server API.Provides spans for:
websocket.send
)websocket.receive
)websocket.close
)Tested with
Limitations
Endpoint
class but direct calls annotated methods viaMethodHandler
. An additional work is still needed to support themMotivation
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: AIDM-535