Skip to content

feat(remote-config)!: add AsmRawResponseBody capability - #2278

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit into
mainfrom
estrigana/add-asm-raw-body-capability
Jul 28, 2026
Merged

feat(remote-config)!: add AsmRawResponseBody capability#2278
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit into
mainfrom
estrigana/add-asm-raw-body-capability

Conversation

@estringana

@estringana estringana commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Add AsmRawResponseBody (49) to RemoteConfigCapabilities to allow tracers to advertise support for raw HTTP response body collection to the WAF via remote config.

RFC-115

@datadog-datadog-prod-us1-2

datadog-datadog-prod-us1-2 Bot commented Jul 27, 2026

Copy link
Copy Markdown

Tests

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 74.59% (-0.03%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: a33768f | Docs | Datadog PR Page | Give us feedback!

@pr-commenter

pr-commenter Bot commented Jul 27, 2026

Copy link
Copy Markdown

Benchmarks

Comparison

Benchmark execution time: 2026-07-27 14:54:46

Comparing candidate commit a33768f in PR branch estrigana/add-asm-raw-body-capability with baseline commit be0b543 in branch main.

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

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz a33768f 1785163434 estrigana/add-asm-raw-body-capability
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 124.122µs 127.254µs ± 5.509µs 126.210µs ± 0.794µs 127.033µs 132.428µs 146.735µs 187.218µs 48.34% 7.872 74.799 4.32% 0.390µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [126.490µs; 128.017µs] or [-0.600%; +0.600%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz a33768f 1785163434 estrigana/add-asm-raw-body-capability
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 156.564ns 160.743ns ± 3.150ns 160.355ns ± 1.701ns 161.848ns 166.768ns 170.400ns 174.490ns 8.82% 1.413 2.859 1.95% 0.223ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [160.306ns; 161.179ns] or [-0.272%; +0.272%] None None None

Baseline

Baseline benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz be0b543 1784918029 main
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 124.864µs 128.340µs ± 5.302µs 127.273µs ± 0.623µs 128.146µs 132.754µs 148.586µs 184.606µs 45.05% 7.511 68.347 4.12% 0.375µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [127.605µs; 129.074µs] or [-0.573%; +0.573%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz be0b543 1784918029 main
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 156.826ns 160.580ns ± 2.973ns 159.836ns ± 1.918ns 162.052ns 166.348ns 168.888ns 171.772ns 7.47% 1.093 0.898 1.85% 0.210ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [160.167ns; 160.992ns] or [-0.257%; +0.257%] None None None

@estringana
estringana force-pushed the estrigana/add-asm-raw-body-capability branch from 6956b40 to 7a3b7e3 Compare July 27, 2026 10:46
@dd-octo-sts

dd-octo-sts Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 87.13 MB 87.13 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.01 MB 8.01 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 98.38 MB 98.38 MB 0% (0 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.77 MB 10.77 MB 0% (0 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 26.00 MB 26.00 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 89.18 KB 89.18 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 187.92 MB 187.93 MB +0% (+8.00 KB) 👌
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 978.93 MB 978.93 MB +0% (+416 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 8.47 MB 8.47 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 89.18 KB 89.18 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 25.05 MB 25.05 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 49.84 MB 49.84 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.61 MB 22.61 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 90.58 KB 90.58 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 192.51 MB 192.52 MB +0% (+8.00 KB) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 968.14 MB 968.14 MB +0% (+386 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 6.54 MB 6.54 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 90.58 KB 90.58 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.91 MB 26.91 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.43 MB 47.43 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 77.74 MB 77.74 MB 0% (0 B) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 8.91 MB 8.91 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 93.20 MB 93.20 MB 0% (0 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.84 MB 10.84 MB 0% (0 B) 👌

@estringana estringana changed the title Add asm raw body capability feat(remote-config): add AsmRawResponseBody capability Jul 27, 2026
@estringana
estringana force-pushed the estrigana/add-asm-raw-body-capability branch from 42c0f04 to a33768f Compare July 27, 2026 14:44
strum_macros::IntoStaticStr,
strum_macros::Display,
)]
#[non_exhaustive]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I added this to fix the semver-check CI failure

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think the issue was rather the title (misplaced !), right? It's ok to have breaking changes, the CI just enforces that the title matches. Also I believe adding #[non_exhaustive] is technically a breaking change as well?

That being said, if this C-like enum is likely to be extended in the future, it looks like a good candidate for #[non_exhaustive]. This will make the next changes non-breaking. I'll let you decide if it's worth keeping or not (typically if this enum is expected to be very stable from now, maybe not worth it). Both options are reasonable.

@estringana estringana changed the title feat(remote-config): add AsmRawResponseBody capability feat!(remote-config): add AsmRawResponseBody capability Jul 27, 2026
@estringana estringana changed the title feat!(remote-config): add AsmRawResponseBody capability feat(remote-config)!: add AsmRawResponseBody capability Jul 27, 2026
@estringana
estringana marked this pull request as ready for review July 27, 2026 16:10
@estringana
estringana requested review from a team as code owners July 27, 2026 16:10

@datadog-datadog-prod-us1-2 datadog-datadog-prod-us1-2 Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Datadog Autotest: PASS

More details

The new capability value 49 follows the existing reverse-order bitset encoding: boundary checks confirmed it produces the expected seven-byte payload and combines correctly with capability 48. The crate’s Cargo validation could not run because the pinned Rust 1.87 toolchain and patched proptest Git dependency were unavailable in the sandbox; no diff-only behavioral regression was identified.

Was this helpful? React 👍 or 👎

📊 Validated against 4 scenarios · Open Bits AI session

🤖 Datadog Autotest · Commit a33768f · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest

strum_macros::IntoStaticStr,
strum_macros::Display,
)]
#[non_exhaustive]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think the issue was rather the title (misplaced !), right? It's ok to have breaking changes, the CI just enforces that the title matches. Also I believe adding #[non_exhaustive] is technically a breaking change as well?

That being said, if this C-like enum is likely to be extended in the future, it looks like a good candidate for #[non_exhaustive]. This will make the next changes non-breaking. I'll let you decide if it's worth keeping or not (typically if this enum is expected to be very stable from now, maybe not worth it). Both options are reasonable.

@estringana

Copy link
Copy Markdown
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351

gh-worker-devflow-routing-ef8351 Bot commented Jul 28, 2026

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2026-07-28 09:24:11 UTC ℹ️ Start processing command /merge


2026-07-28 09:24:16 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in main is approximately 1h (p90).


2026-07-28 10:14:08 UTC ℹ️ MergeQueue: This merge request was merged

@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot merged commit 95610de into main Jul 28, 2026
121 of 125 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot deleted the estrigana/add-asm-raw-body-capability branch July 28, 2026 10:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants