- Notifications
You must be signed in to change notification settings - Fork 314
Create DynamoDB instrumentation + add span pointers for updateItem
and deleteItem
#8490
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
# Conflicts: # dd-java-agent/instrumentation/aws-java-s3-2.0/src/main/java/datadog/trace/instrumentation/aws/v2/s3/TextMapInjectAdapter.java
BenchmarksStartupParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 58 metrics, 5 unstable metrics. Startup time reports for insecure-bankgantt title insecure-bank - global startup overhead: candidate=1.48.0-SNAPSHOT~a0b2edd0d0, baseline=1.48.0-SNAPSHOT~71cbb065b9 dateFormat X axisFormat %s section tracing Agent [baseline] (1.04 s) : 0, 1039737 Total [baseline] (8.68 s) : 0, 8680289 Agent [candidate] (1.036 s) : 0, 1035564 Total [candidate] (8.681 s) : 0, 8681393 section iast Agent [baseline] (1.175 s) : 0, 1175185 Total [baseline] (9.222 s) : 0, 9222068 Agent [candidate] (1.17 s) : 0, 1169903 Total [candidate] (9.243 s) : 0, 9242891 section iast_HARDCODED_SECRET_DISABLED Agent [baseline] (1.167 s) : 0, 1166726 Total [baseline] (9.204 s) : 0, 9204053 Agent [candidate] (1.17 s) : 0, 1169677 Total [candidate] (9.208 s) : 0, 9207795 section iast_TELEMETRY_OFF Agent [baseline] (1.171 s) : 0, 1171115 Total [baseline] (9.265 s) : 0, 9265081 Agent [candidate] (1.168 s) : 0, 1167592 Total [candidate] (9.226 s) : 0, 9226461
gantt title insecure-bank - break down per module: candidate=1.48.0-SNAPSHOT~a0b2edd0d0, baseline=1.48.0-SNAPSHOT~71cbb065b9 dateFormat X axisFormat %s section tracing BytebuddyAgent [baseline] (716.332 ms) : 0, 716332 BytebuddyAgent [candidate] (715.266 ms) : 0, 715266 GlobalTracer [baseline] (239.086 ms) : 0, 239086 GlobalTracer [candidate] (238.825 ms) : 0, 238825 AppSec [baseline] (54.996 ms) : 0, 54996 AppSec [candidate] (55.246 ms) : 0, 55246 Remote Config [baseline] (679.905 µs) : 0, 680 Remote Config [candidate] (674.486 µs) : 0, 674 Telemetry [baseline] (13.708 ms) : 0, 13708 Telemetry [candidate] (10.614 ms) : 0, 10614 section iast BytebuddyAgent [baseline] (840.542 ms) : 0, 840542 BytebuddyAgent [candidate] (836.59 ms) : 0, 836590 GlobalTracer [baseline] (230.97 ms) : 0, 230970 GlobalTracer [candidate] (230.01 ms) : 0, 230010 IAST [baseline] (23.672 ms) : 0, 23672 IAST [candidate] (22.799 ms) : 0, 22799 AppSec [baseline] (55.658 ms) : 0, 55658 AppSec [candidate] (56.358 ms) : 0, 56358 Remote Config [baseline] (608.051 µs) : 0, 608 Remote Config [candidate] (602.664 µs) : 0, 603 Telemetry [baseline] (8.619 ms) : 0, 8619 Telemetry [candidate] (8.63 ms) : 0, 8630 section iast_HARDCODED_SECRET_DISABLED BytebuddyAgent [baseline] (833.238 ms) : 0, 833238 BytebuddyAgent [candidate] (835.669 ms) : 0, 835669 GlobalTracer [baseline] (229.678 ms) : 0, 229678 GlobalTracer [candidate] (230.029 ms) : 0, 230029 IAST [baseline] (22.953 ms) : 0, 22953 IAST [candidate] (22.981 ms) : 0, 22981 AppSec [baseline] (56.652 ms) : 0, 56652 AppSec [candidate] (56.77 ms) : 0, 56770 Remote Config [baseline] (606.154 µs) : 0, 606 Remote Config [candidate] (608.304 µs) : 0, 608 Telemetry [baseline] (8.664 ms) : 0, 8664 Telemetry [candidate] (8.69 ms) : 0, 8690 section iast_TELEMETRY_OFF BytebuddyAgent [baseline] (836.922 ms) : 0, 836922 BytebuddyAgent [candidate] (833.616 ms) : 0, 833616 GlobalTracer [baseline] (230.519 ms) : 0, 230519 GlobalTracer [candidate] (230.27 ms) : 0, 230270 IAST [baseline] (23.2 ms) : 0, 23200 IAST [candidate] (22.389 ms) : 0, 22389 AppSec [baseline] (56.086 ms) : 0, 56086 AppSec [candidate] (57.119 ms) : 0, 57119 Remote Config [baseline] (625.176 µs) : 0, 625 Remote Config [candidate] (621.649 µs) : 0, 622 Telemetry [baseline] (8.725 ms) : 0, 8725 Telemetry [candidate] (8.641 ms) : 0, 8641 Startup time reports for petclinicgantt title petclinic - global startup overhead: candidate=1.48.0-SNAPSHOT~a0b2edd0d0, baseline=1.48.0-SNAPSHOT~71cbb065b9 dateFormat X axisFormat %s section tracing Agent [baseline] (1.038 s) : 0, 1037811 Total [baseline] (10.45 s) : 0, 10450042 Agent [candidate] (1.037 s) : 0, 1036923 Total [candidate] (10.517 s) : 0, 10516810 section appsec Agent [baseline] (1.188 s) : 0, 1187738 Total [baseline] (10.753 s) : 0, 10752954 Agent [candidate] (1.187 s) : 0, 1187006 Total [candidate] (10.814 s) : 0, 10814346 section iast Agent [baseline] (1.169 s) : 0, 1169278 Total [baseline] (10.971 s) : 0, 10971280 Agent [candidate] (1.175 s) : 0, 1175039 Total [candidate] (11.058 s) : 0, 11057641 section profiling Agent [baseline] (1.26 s) : 0, 1259918 Total [baseline] (10.837 s) : 0, 10836722 Agent [candidate] (1.26 s) : 0, 1260427 Total [candidate] (10.895 s) : 0, 10894971
gantt title petclinic - break down per module: candidate=1.48.0-SNAPSHOT~a0b2edd0d0, baseline=1.48.0-SNAPSHOT~71cbb065b9 dateFormat X axisFormat %s section tracing BytebuddyAgent [baseline] (715.637 ms) : 0, 715637 BytebuddyAgent [candidate] (715.036 ms) : 0, 715036 GlobalTracer [baseline] (239.215 ms) : 0, 239215 GlobalTracer [candidate] (238.37 ms) : 0, 238370 AppSec [baseline] (55.255 ms) : 0, 55255 AppSec [candidate] (55.119 ms) : 0, 55119 Remote Config [baseline] (681.338 µs) : 0, 681 Remote Config [candidate] (689.155 µs) : 0, 689 Telemetry [baseline] (12.095 ms) : 0, 12095 Telemetry [candidate] (12.827 ms) : 0, 12827 section appsec BytebuddyAgent [baseline] (738.547 ms) : 0, 738547 BytebuddyAgent [candidate] (737.793 ms) : 0, 737793 GlobalTracer [baseline] (237.263 ms) : 0, 237263 GlobalTracer [candidate] (237.131 ms) : 0, 237131 AppSec [baseline] (177.067 ms) : 0, 177067 AppSec [candidate] (177.301 ms) : 0, 177301 Remote Config [baseline] (665.075 µs) : 0, 665 Remote Config [candidate] (659.953 µs) : 0, 660 Telemetry [baseline] (8.384 ms) : 0, 8384 Telemetry [candidate] (8.324 ms) : 0, 8324 IAST [baseline] (21.676 ms) : 0, 21676 IAST [candidate] (21.603 ms) : 0, 21603 section iast BytebuddyAgent [baseline] (836.02 ms) : 0, 836020 BytebuddyAgent [candidate] (840.709 ms) : 0, 840709 GlobalTracer [baseline] (229.894 ms) : 0, 229894 GlobalTracer [candidate] (230.723 ms) : 0, 230723 AppSec [baseline] (56.444 ms) : 0, 56444 AppSec [candidate] (56.523 ms) : 0, 56523 Remote Config [baseline] (606.128 µs) : 0, 606 Remote Config [candidate] (609.781 µs) : 0, 610 Telemetry [baseline] (8.616 ms) : 0, 8616 Telemetry [candidate] (8.704 ms) : 0, 8704 IAST [baseline] (22.696 ms) : 0, 22696 IAST [candidate] (22.733 ms) : 0, 22733 section profiling ProfilingAgent [baseline] (96.09 ms) : 0, 96090 ProfilingAgent [candidate] (95.508 ms) : 0, 95508 BytebuddyAgent [baseline] (709.714 ms) : 0, 709714 BytebuddyAgent [candidate] (712.126 ms) : 0, 712126 GlobalTracer [baseline] (348.874 ms) : 0, 348874 GlobalTracer [candidate] (348.793 ms) : 0, 348793 AppSec [baseline] (55.211 ms) : 0, 55211 AppSec [candidate] (53.935 ms) : 0, 53935 Remote Config [baseline] (693.652 µs) : 0, 694 Remote Config [candidate] (678.317 µs) : 0, 678 Telemetry [baseline] (8.958 ms) : 0, 8958 Telemetry [candidate] (8.861 ms) : 0, 8861 Profiling [baseline] (96.114 ms) : 0, 96114 Profiling [candidate] (95.533 ms) : 0, 95533 LoadParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 13 metrics, 17 unstable metrics. Request duration reports for petclinicgantt title petclinic - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~a0b2edd0d0, baseline=1.48.0-SNAPSHOT~71cbb065b9 dateFormat X axisFormat %s section baseline no_agent (1.354 ms) : 1333, 1374 . : milestone, 1354, appsec (1.721 ms) : 1697, 1745 . : milestone, 1721, appsec_no_iast (1.743 ms) : 1719, 1768 . : milestone, 1743, code_origins (1.701 ms) : 1669, 1734 . : milestone, 1701, iast (1.517 ms) : 1493, 1542 . : milestone, 1517, profiling (1.509 ms) : 1485, 1532 . : milestone, 1509, tracing (1.497 ms) : 1472, 1522 . : milestone, 1497, section candidate no_agent (1.346 ms) : 1327, 1366 . : milestone, 1346, appsec (1.734 ms) : 1710, 1758 . : milestone, 1734, appsec_no_iast (1.716 ms) : 1691, 1741 . : milestone, 1716, code_origins (1.676 ms) : 1641, 1710 . : milestone, 1676, iast (1.509 ms) : 1485, 1533 . : milestone, 1509, profiling (1.547 ms) : 1523, 1571 . : milestone, 1547, tracing (1.498 ms) : 1475, 1522 . : milestone, 1498,
Request duration reports for insecure-bankgantt title insecure-bank - request duration [CI 0.99] : candidate=1.48.0-SNAPSHOT~a0b2edd0d0, baseline=1.48.0-SNAPSHOT~71cbb065b9 dateFormat X axisFormat %s section baseline no_agent (387.436 µs) : 368, 407 . : milestone, 387, iast (514.994 µs) : 493, 537 . : milestone, 515, iast_FULL (731.879 µs) : 710, 754 . : milestone, 732, iast_GLOBAL (566.076 µs) : 543, 589 . : milestone, 566, iast_HARDCODED_SECRET_DISABLED (512.677 µs) : 490, 535 . : milestone, 513, iast_INACTIVE (464.016 µs) : 442, 486 . : milestone, 464, iast_TELEMETRY_OFF (501.016 µs) : 478, 524 . : milestone, 501, tracing (459.293 µs) : 438, 481 . : milestone, 459, section candidate no_agent (382.845 µs) : 363, 403 . : milestone, 383, iast (514.353 µs) : 492, 537 . : milestone, 514, iast_FULL (732.584 µs) : 711, 754 . : milestone, 733, iast_GLOBAL (553.605 µs) : 532, 575 . : milestone, 554, iast_HARDCODED_SECRET_DISABLED (510.793 µs) : 489, 532 . : milestone, 511, iast_INACTIVE (464.066 µs) : 442, 486 . : milestone, 464, iast_TELEMETRY_OFF (500.362 µs) : 477, 523 . : milestone, 500, tracing (458.104 µs) : 437, 479 . : milestone, 458,
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~a0b2edd0d0, baseline=1.48.0-SNAPSHOT~71cbb065b9 dateFormat X axisFormat %s section baseline no_agent (1.48 ms) : 1469, 1491 . : milestone, 1480, appsec (2.348 ms) : 2305, 2391 . : milestone, 2348, iast (2.129 ms) : 2074, 2184 . : milestone, 2129, iast_GLOBAL (2.173 ms) : 2118, 2229 . : milestone, 2173, profiling (1.997 ms) : 1952, 2041 . : milestone, 1997, tracing (1.953 ms) : 1911, 1995 . : milestone, 1953, section candidate no_agent (1.479 ms) : 1468, 1491 . : milestone, 1479, appsec (2.345 ms) : 2302, 2388 . : milestone, 2345, iast (2.125 ms) : 2070, 2180 . : milestone, 2125, iast_GLOBAL (2.168 ms) : 2112, 2223 . : milestone, 2168, profiling (1.975 ms) : 1932, 2018 . : milestone, 1975, tracing (1.948 ms) : 1906, 1990 . : milestone, 1948,
Execution time for biojavagantt title biojava - execution time [CI 0.99] : candidate=1.48.0-SNAPSHOT~a0b2edd0d0, baseline=1.48.0-SNAPSHOT~71cbb065b9 dateFormat X axisFormat %s section baseline no_agent (15.459 s) : 15459000, 15459000 . : milestone, 15459000, appsec (14.983 s) : 14983000, 14983000 . : milestone, 14983000, iast (19.147 s) : 19147000, 19147000 . : milestone, 19147000, iast_GLOBAL (18.128 s) : 18128000, 18128000 . : milestone, 18128000, profiling (15.695 s) : 15695000, 15695000 . : milestone, 15695000, tracing (15.033 s) : 15033000, 15033000 . : milestone, 15033000, section candidate no_agent (15.423 s) : 15423000, 15423000 . : milestone, 15423000, appsec (14.759 s) : 14759000, 14759000 . : milestone, 14759000, iast (18.972 s) : 18972000, 18972000 . : milestone, 18972000, iast_GLOBAL (18.43 s) : 18430000, 18430000 . : milestone, 18430000, profiling (15.677 s) : 15677000, 15677000 . : milestone, 15677000, tracing (14.716 s) : 14716000, 14716000 . : milestone, 14716000,
|
| ||
@Override | ||
public String[] helperClassNames() { | ||
return new String[] {packageName + ".S3Interceptor", packageName + ".TextMapInjectAdapter"}; |
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.
this file TextMapInjectAdapter
was never used
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.
Looks reasonable to me, but someone from IDM should also take a look
(also rebase on top of latest master to pick up fixes for the failing CI tests below)
return value.n(); | ||
} else if (value.b() != null) { | ||
// For binary values, convert the bytes back to string | ||
return new String(value.b().asByteArray(), java.nio.charset.Charset.defaultCharset()); |
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 sure about the charset?
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, from manual testing, this works the same as the dd-trace-js implementation
https://github.com/DataDog/dd-trace-js/blob/1ce996b79839d1a7e77b9831850b85d38e94417a/packages/datadog-plugin-aws-sdk/src/util.js#L43-L44
def links = new JsonSlurper().parseText(spanLinks) | ||
assert links.size() == 1 | ||
def link = links[0] | ||
assert link["attributes"] != null |
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.
Very soon we'll have a link
assertion that will allow asserting links on a span. I will migrate that test
@Override | ||
public Map<String, Object> processTags( | ||
Map<String, Object> unsafeTags, DDSpanContext spanContext, List<AgentSpanLink> spanLinks) { | ||
AgentSpanLink s3Link = handleS3SpanPointer(unsafeTags); |
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.
As soon as we'll have more span pointer sources we'll need to think about refactoring this class for a better mechanism. But it's not for this PR
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 ok. I left one question about the charset when converting bytes to string
| 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
Creates an instrumentation for DynamoDb and adds span pointers in DynamoDb for
updateItem
anddeleteItem
requests.These two are the simplest cases, since we know the primary key/values. In a future PR, I will get to
putItem
and batch updates, since those are more complicated cases.Span pointers are similar to Span Links, but for cases when it is impossible to pass the Trace ID and Span ID between the spans that need to be linked.
When the calculated hashes for the upstream and downstream lambdas match, the Datadog frontend will link the two traces together.

When clicking on the linked span, a new tab opens linking to the downstream Lambda function that was triggered by this DynamoDB item update.
This feature can be disabled by setting the config
trace.aws.add.span.pointers
or Lambda environment variableDD_TRACE_AWS_ADD_SPAN_POINTERS
to false.Motivation
Span pointers is a new feature being developed by the Serverless team. This feature already exists in Python & Node, and I'm working on adding it to other runtimes (.NET, Java, Golang).
Additional Notes
I also added tests:
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]