Add azure-functions instrumentation#8432
Conversation
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 petclinicgantt
title petclinic - global startup overhead: candidate=1.47.0-SNAPSHOT~a40817f409, baseline=1.47.0-SNAPSHOT~9e4966b4a4
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.039 s) : 0, 1039183
Total [baseline] (10.463 s) : 0, 10463131
Agent [candidate] (1.041 s) : 0, 1040667
Total [candidate] (10.342 s) : 0, 10341932
section appsec
Agent [baseline] (1.181 s) : 0, 1181474
Total [baseline] (10.752 s) : 0, 10751959
Agent [candidate] (1.182 s) : 0, 1181775
Total [candidate] (10.716 s) : 0, 10715711
section iast
Agent [baseline] (1.177 s) : 0, 1176574
Total [baseline] (10.997 s) : 0, 10997068
Agent [candidate] (1.179 s) : 0, 1179298
Total [candidate] (11.027 s) : 0, 11026763
section profiling
Agent [baseline] (1.263 s) : 0, 1262594
Total [baseline] (10.838 s) : 0, 10838179
Agent [candidate] (1.259 s) : 0, 1259377
Total [candidate] (10.823 s) : 0, 10822857
gantt
title petclinic - break down per module: candidate=1.47.0-SNAPSHOT~a40817f409, baseline=1.47.0-SNAPSHOT~9e4966b4a4
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (717.486 ms) : 0, 717486
BytebuddyAgent [candidate] (717.05 ms) : 0, 717050
GlobalTracer [baseline] (239.118 ms) : 0, 239118
GlobalTracer [candidate] (239.18 ms) : 0, 239180
AppSec [baseline] (55.55 ms) : 0, 55550
AppSec [candidate] (55.421 ms) : 0, 55421
Remote Config [baseline] (715.632 µs) : 0, 716
Remote Config [candidate] (705.361 µs) : 0, 705
Telemetry [baseline] (11.359 ms) : 0, 11359
Telemetry [candidate] (13.023 ms) : 0, 13023
section appsec
BytebuddyAgent [baseline] (733.953 ms) : 0, 733953
BytebuddyAgent [candidate] (735.064 ms) : 0, 735064
GlobalTracer [baseline] (235.746 ms) : 0, 235746
GlobalTracer [candidate] (236.208 ms) : 0, 236208
AppSec [baseline] (177.245 ms) : 0, 177245
AppSec [candidate] (175.597 ms) : 0, 175597
Remote Config [baseline] (654.191 µs) : 0, 654
Remote Config [candidate] (662.772 µs) : 0, 663
Telemetry [baseline] (8.232 ms) : 0, 8232
Telemetry [candidate] (8.303 ms) : 0, 8303
IAST [baseline] (21.392 ms) : 0, 21392
IAST [candidate] (21.284 ms) : 0, 21284
section iast
BytebuddyAgent [baseline] (841.31 ms) : 0, 841310
BytebuddyAgent [candidate] (842.378 ms) : 0, 842378
GlobalTracer [baseline] (230.572 ms) : 0, 230572
GlobalTracer [candidate] (231.767 ms) : 0, 231767
AppSec [baseline] (57.293 ms) : 0, 57293
AppSec [candidate] (57.419 ms) : 0, 57419
Remote Config [baseline] (614.145 µs) : 0, 614
Remote Config [candidate] (616.409 µs) : 0, 616
Telemetry [baseline] (8.729 ms) : 0, 8729
Telemetry [candidate] (8.783 ms) : 0, 8783
IAST [baseline] (22.972 ms) : 0, 22972
IAST [candidate] (22.96 ms) : 0, 22960
section profiling
BytebuddyAgent [baseline] (710.961 ms) : 0, 710961
BytebuddyAgent [candidate] (707.897 ms) : 0, 707897
GlobalTracer [baseline] (349.443 ms) : 0, 349443
GlobalTracer [candidate] (348.866 ms) : 0, 348866
AppSec [baseline] (55.502 ms) : 0, 55502
AppSec [candidate] (54.477 ms) : 0, 54477
Remote Config [baseline] (668.14 µs) : 0, 668
Remote Config [candidate] (690.567 µs) : 0, 691
Telemetry [baseline] (8.937 ms) : 0, 8937
Telemetry [candidate] (8.93 ms) : 0, 8930
ProfilingAgent [baseline] (96.464 ms) : 0, 96464
ProfilingAgent [candidate] (96.132 ms) : 0, 96132
Profiling [baseline] (96.488 ms) : 0, 96488
Profiling [candidate] (96.155 ms) : 0, 96155
Startup time reports for insecure-bankgantt
title insecure-bank - global startup overhead: candidate=1.47.0-SNAPSHOT~a40817f409, baseline=1.47.0-SNAPSHOT~9e4966b4a4
dateFormat X
axisFormat %s
section tracing
Agent [baseline] (1.036 s) : 0, 1035957
Total [baseline] (8.685 s) : 0, 8684870
Agent [candidate] (1.045 s) : 0, 1045488
Total [candidate] (8.717 s) : 0, 8716674
section iast
Agent [baseline] (1.169 s) : 0, 1168673
Total [baseline] (9.239 s) : 0, 9239304
Agent [candidate] (1.179 s) : 0, 1178904
Total [candidate] (9.26 s) : 0, 9259986
section iast_HARDCODED_SECRET_DISABLED
Agent [baseline] (1.178 s) : 0, 1177644
Total [baseline] (9.195 s) : 0, 9194891
Agent [candidate] (1.172 s) : 0, 1171527
Total [candidate] (9.205 s) : 0, 9204824
section iast_TELEMETRY_OFF
Agent [baseline] (1.179 s) : 0, 1179337
Total [baseline] (9.23 s) : 0, 9229760
Agent [candidate] (1.171 s) : 0, 1170540
Total [candidate] (9.232 s) : 0, 9232338
gantt
title insecure-bank - break down per module: candidate=1.47.0-SNAPSHOT~a40817f409, baseline=1.47.0-SNAPSHOT~9e4966b4a4
dateFormat X
axisFormat %s
section tracing
BytebuddyAgent [baseline] (716.144 ms) : 0, 716144
BytebuddyAgent [candidate] (721.564 ms) : 0, 721564
GlobalTracer [baseline] (238.639 ms) : 0, 238639
GlobalTracer [candidate] (239.805 ms) : 0, 239805
AppSec [baseline] (55.521 ms) : 0, 55521
AppSec [candidate] (55.272 ms) : 0, 55272
Remote Config [baseline] (700.984 µs) : 0, 701
Remote Config [candidate] (697.125 µs) : 0, 697
Telemetry [baseline] (9.974 ms) : 0, 9974
Telemetry [candidate] (12.851 ms) : 0, 12851
section iast
BytebuddyAgent [baseline] (835.317 ms) : 0, 835317
BytebuddyAgent [candidate] (843.3 ms) : 0, 843300
GlobalTracer [baseline] (229.565 ms) : 0, 229565
GlobalTracer [candidate] (231.016 ms) : 0, 231016
AppSec [baseline] (56.679 ms) : 0, 56679
AppSec [candidate] (57.091 ms) : 0, 57091
Remote Config [baseline] (610.469 µs) : 0, 610
Remote Config [candidate] (620.448 µs) : 0, 620
Telemetry [baseline] (8.668 ms) : 0, 8668
Telemetry [candidate] (8.626 ms) : 0, 8626
IAST [baseline] (22.849 ms) : 0, 22849
IAST [candidate] (22.721 ms) : 0, 22721
section iast_HARDCODED_SECRET_DISABLED
BytebuddyAgent [baseline] (841.283 ms) : 0, 841283
BytebuddyAgent [candidate] (836.68 ms) : 0, 836680
GlobalTracer [baseline] (230.693 ms) : 0, 230693
GlobalTracer [candidate] (230.004 ms) : 0, 230004
AppSec [baseline] (57.973 ms) : 0, 57973
AppSec [candidate] (57.405 ms) : 0, 57405
Remote Config [baseline] (619.299 µs) : 0, 619
Remote Config [candidate] (607.101 µs) : 0, 607
Telemetry [baseline] (8.906 ms) : 0, 8906
Telemetry [candidate] (8.683 ms) : 0, 8683
IAST [baseline] (23.119 ms) : 0, 23119
IAST [candidate] (22.88 ms) : 0, 22880
section iast_TELEMETRY_OFF
BytebuddyAgent [baseline] (843.095 ms) : 0, 843095
BytebuddyAgent [candidate] (835.29 ms) : 0, 835290
GlobalTracer [baseline] (231.97 ms) : 0, 231970
GlobalTracer [candidate] (230.945 ms) : 0, 230945
AppSec [baseline] (53.377 ms) : 0, 53377
AppSec [candidate] (56.572 ms) : 0, 56572
Remote Config [baseline] (624.509 µs) : 0, 625
Remote Config [candidate] (622.667 µs) : 0, 623
Telemetry [baseline] (8.676 ms) : 0, 8676
Telemetry [candidate] (8.63 ms) : 0, 8630
IAST [baseline] (26.527 ms) : 0, 26527
IAST [candidate] (23.205 ms) : 0, 23205
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 insecure-bankgantt
title insecure-bank - request duration [CI 0.99] : candidate=1.47.0-SNAPSHOT~a40817f409, baseline=1.47.0-SNAPSHOT~9e4966b4a4
dateFormat X
axisFormat %s
section baseline
no_agent (386.721 µs) : 366, 407
. : milestone, 387,
iast (518.372 µs) : 496, 541
. : milestone, 518,
iast_FULL (734.914 µs) : 713, 757
. : milestone, 735,
iast_GLOBAL (558.922 µs) : 537, 581
. : milestone, 559,
iast_HARDCODED_SECRET_DISABLED (516.824 µs) : 495, 539
. : milestone, 517,
iast_INACTIVE (464.428 µs) : 443, 486
. : milestone, 464,
iast_TELEMETRY_OFF (500.717 µs) : 479, 523
. : milestone, 501,
tracing (463.853 µs) : 442, 486
. : milestone, 464,
section candidate
no_agent (386.802 µs) : 367, 406
. : milestone, 387,
iast (513.684 µs) : 491, 537
. : milestone, 514,
iast_FULL (738.247 µs) : 716, 760
. : milestone, 738,
iast_GLOBAL (570.869 µs) : 548, 593
. : milestone, 571,
iast_HARDCODED_SECRET_DISABLED (519.615 µs) : 498, 541
. : milestone, 520,
iast_INACTIVE (462.716 µs) : 442, 484
. : milestone, 463,
iast_TELEMETRY_OFF (502.153 µs) : 479, 525
. : milestone, 502,
tracing (463.23 µs) : 442, 485
. : milestone, 463,
Request duration reports for petclinicgantt
title petclinic - request duration [CI 0.99] : candidate=1.47.0-SNAPSHOT~a40817f409, baseline=1.47.0-SNAPSHOT~9e4966b4a4
dateFormat X
axisFormat %s
section baseline
no_agent (1.366 ms) : 1346, 1386
. : milestone, 1366,
appsec (1.764 ms) : 1740, 1788
. : milestone, 1764,
appsec_no_iast (1.77 ms) : 1746, 1794
. : milestone, 1770,
code_origins (1.688 ms) : 1655, 1721
. : milestone, 1688,
iast (1.524 ms) : 1499, 1548
. : milestone, 1524,
profiling (1.542 ms) : 1516, 1567
. : milestone, 1542,
tracing (1.513 ms) : 1489, 1537
. : milestone, 1513,
section candidate
no_agent (1.367 ms) : 1347, 1387
. : milestone, 1367,
appsec (1.768 ms) : 1745, 1792
. : milestone, 1768,
appsec_no_iast (1.753 ms) : 1730, 1777
. : milestone, 1753,
code_origins (1.685 ms) : 1651, 1719
. : milestone, 1685,
iast (1.528 ms) : 1504, 1551
. : milestone, 1528,
profiling (1.555 ms) : 1531, 1580
. : milestone, 1555,
tracing (1.513 ms) : 1489, 1537
. : milestone, 1513,
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~a40817f409, baseline=1.47.0-SNAPSHOT~9e4966b4a4
dateFormat X
axisFormat %s
section baseline
no_agent (15.055 s) : 15055000, 15055000
. : milestone, 15055000,
appsec (15.142 s) : 15142000, 15142000
. : milestone, 15142000,
iast (19.222 s) : 19222000, 19222000
. : milestone, 19222000,
iast_GLOBAL (18.054 s) : 18054000, 18054000
. : milestone, 18054000,
profiling (15.535 s) : 15535000, 15535000
. : milestone, 15535000,
tracing (15.05 s) : 15050000, 15050000
. : milestone, 15050000,
section candidate
no_agent (15.408 s) : 15408000, 15408000
. : milestone, 15408000,
appsec (15.064 s) : 15064000, 15064000
. : milestone, 15064000,
iast (18.581 s) : 18581000, 18581000
. : milestone, 18581000,
iast_GLOBAL (18.199 s) : 18199000, 18199000
. : milestone, 18199000,
profiling (14.901 s) : 14901000, 14901000
. : milestone, 14901000,
tracing (15.051 s) : 15051000, 15051000
. : milestone, 15051000,
Execution time for tomcatgantt
title tomcat - execution time [CI 0.99] : candidate=1.47.0-SNAPSHOT~a40817f409, baseline=1.47.0-SNAPSHOT~9e4966b4a4
dateFormat X
axisFormat %s
section baseline
no_agent (1.481 ms) : 1469, 1493
. : milestone, 1481,
appsec (2.377 ms) : 2333, 2421
. : milestone, 2377,
iast (2.125 ms) : 2070, 2179
. : milestone, 2125,
iast_GLOBAL (2.172 ms) : 2116, 2228
. : milestone, 2172,
profiling (2.003 ms) : 1958, 2047
. : milestone, 2003,
tracing (1.958 ms) : 1915, 2000
. : milestone, 1958,
section candidate
no_agent (1.478 ms) : 1466, 1489
. : milestone, 1478,
appsec (2.373 ms) : 2329, 2416
. : milestone, 2373,
iast (2.125 ms) : 2070, 2180
. : milestone, 2125,
iast_GLOBAL (2.166 ms) : 2110, 2221
. : milestone, 2166,
profiling (1.989 ms) : 1945, 2034
. : milestone, 1989,
tracing (1.954 ms) : 1912, 1997
. : milestone, 1954,
|
| pass { | ||
| group = 'com.microsoft.azure.functions' | ||
| module = 'azure-functions-java-library' | ||
| versions = '[1.2.2,)' |
There was a problem hiding this comment.
I think you're targeting this one and not earlier versions because it's the oldest one targeting Java 8 ?
A round major version as lower bound is pretty standard, but a specific version like this deserves a comment I think.
There was a problem hiding this comment.
1.2.2 is the earliest stable version I was able to use. Using 1.2.0 results in an error (see below). Prior to 1.2.0 all versions are beta versions. I added a comment to reflect this in code.
The following artifacts could not be resolved: com.microsoft.maven:java-8-parent:pom:8.0.0-SNAPSHOT (absent)
| public String hierarchyMarkerType() { | ||
| return null; | ||
| } |
There was a problem hiding this comment.
I wonder if the Instrumenter.ForTypeHierarchy is the most relevant here, given that we return null here 🤔
There was a problem hiding this comment.
If we assume that "com.microsoft.azure.functions.annotation.FunctionName" will be visible for any types using that annotation then I would suggest returning "com.microsoft.azure.functions.annotation.FunctionName" here.
You can then change hierarchyMatcher to return
return declaresMethod(isAnnotatedWith(named(hierarchyMarkerType())));
to avoid duplicating the constant in the code
There was a problem hiding this comment.
@mcculls When I update hierarchyMarkerType to return com.microsoft.azure.functions.annotation.FunctionName the class that should be instrumented appears to be skipped as I'm not seeing any spans created for it.
@Override
public String hierarchyMarkerType() {
return "com.microsoft.azure.functions.annotation.FunctionName";
}
For context here's an example of the class that should be instrumented. I wonder if it has something to do with how the Azure Function environment is loading classes?
https://github.com/DataDog/dd-trace-java/blob/95d4c18846c516e62cf7807aaa7ec361816c4478/dd-java-agent/instrumentation/azure-functions/src/test/groovy/Function.java
There was a problem hiding this comment.
it could be, in other words it sounds that we cannot assume that "com.microsoft.azure.functions.annotation.FunctionName" will be visible (as in defined as a resource) for any types using that annotation
If that's the case then it's fine to leave hierarchyMarkerType as null - just add a comment saying this was intentional because of the class-loading in the Azure Function environment
There was a problem hiding this comment.
Sounds good, I added a comment in code for this
| if (azureFunctions) { | ||
| defaultVersion = "v1"; |
There was a problem hiding this comment.
ah ? Why ? Can you add a comment to justify this ?
There was a problem hiding this comment.
To be consistent with the instrumentation in other runtimes (node, python) the operation name should be azure.functions.invoke. I added a comment to reflect this in the code.
| 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
Add azure-functions instrumentation for Http triggers.
Motivation
Automatically generate spans for http requests made to Azure Functions.
Additional Notes
Azure documentation
Testing in a function deployed to Azure
Contributor Checklist
type:and (comp:orinst:) labels in addition to any usefull labelsclose,fixor any linking keywords when referencing an issue.Use
solvesinstead, and assign the PR milestone to the issueJira ticket: SVLS-5920