Skip to content

[APMSP-2668] Reach feature parity on redis obfuscation#1632

Open
Eldolfin wants to merge 5 commits intomainfrom
oscarld/redis-obfuscation-parity
Open

[APMSP-2668] Reach feature parity on redis obfuscation#1632
Eldolfin wants to merge 5 commits intomainfrom
oscarld/redis-obfuscation-parity

Conversation

@Eldolfin
Copy link
Contributor

What does this PR do?

  • make remove_all_reids_args public (used in testing)
  • fix HSET with multiple key/values obfuscation
  • port quantize_redis_string

Motivation

Making libdatadog’s obfuscation feature equivalent to the Agent’s implementation.

Additional Notes

How to test the change?

@github-actions
Copy link

github-actions bot commented Feb 26, 2026

📚 Documentation Check Results

⚠️ 507 documentation warning(s) found

📦 libdd-trace-obfuscation - 507 warning(s)


Updated: 2026-02-26 16:19:45 UTC | Commit: b8fe1b0 | missing-docs job results

@github-actions
Copy link

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/oscarld/redis-obfuscation-parity

Summary by Rule

Rule Base Branch PR Branch Change

Annotation Counts by File

File Base Branch PR Branch Change

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 27 27 No change (0%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 59 59 No change (0%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-crashtracker 12 12 No change (0%)
libdd-data-pipeline 5 5 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 1 No change (0%)
libdd-profiling 13 13 No change (0%)
libdd-telemetry 19 19 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 9 9 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 219 219 No change (0%)

About This Report

This report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality.

@github-actions
Copy link

github-actions bot commented Feb 26, 2026

🔒 Cargo Deny Results

No issues found!

📦 libdd-trace-obfuscation - ✅ No issues


Updated: 2026-02-26 16:23:22 UTC | Commit: b8fe1b0 | dependency-check job results

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR brings libdd-trace-obfuscation Redis obfuscation behavior closer to the Datadog Agent by adding Redis query quantization, fixing multi-pair HSET value obfuscation, and exposing the “remove all args” helper for external use (e.g., tests).

Changes:

  • Added quantize_redis_string() to extract up to 3 Redis command names from a (possibly multi-line) query.
  • Fixed HSET obfuscation to handle multiple field/value pairs (aligning with existing HMSET behavior).
  • Made remove_all_redis_args() public.
Comments suppressed due to low confidence (1)

libdd-trace-obfuscation/src/redis.rs:182

  • The HSET obfuscation change now supports multiple field/value pairs, but the test suite only covers single-pair HSET key field value. Add a test case for multi-pair HSET (e.g., HSET key f1 v1 f2 v2) to prevent regressions in this updated behavior.
        b"HMSET" | b"HSET" => {
            // Every 2nd argument starting from first.
            // • HMSET key field value [field value ...]
            args = obfuscate_redis_args_step(args, 1, 2)
        }

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +51 to +57
let mut result = commands.join(" ");
if commands.len() == MAX_REDIS_NB_COMMANDS || truncated {
if !result.is_empty() {
result.push(' ');
}
result.push_str("...");
}
Copy link

Copilot AI Feb 26, 2026

Choose a reason for hiding this comment

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

The ellipsis logic appends "..." whenever commands.len() == MAX_REDIS_NB_COMMANDS, even if the input contains exactly 3 commands and nothing more. If the intent is to indicate truncation only when additional (non-empty) commands exist (or a truncation mark was seen), this should instead be conditioned on having remaining content beyond the captured commands.

Copilot uses AI. Check for mistakes.
@codecov-commenter
Copy link

codecov-commenter commented Feb 26, 2026

Codecov Report

❌ Patch coverage is 95.45455% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.21%. Comparing base (40898a4) to head (dfa071c).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1632      +/-   ##
==========================================
+ Coverage   71.19%   71.21%   +0.01%     
==========================================
  Files         423      423              
  Lines       62453    62495      +42     
==========================================
+ Hits        44466    44503      +37     
- Misses      17987    17992       +5     
Components Coverage Δ
libdd-crashtracker 63.23% <ø> (-0.04%) ⬇️
libdd-crashtracker-ffi 17.64% <ø> (ø)
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.70% <ø> (ø)
libdd-data-pipeline-ffi 73.91% <ø> (ø)
libdd-common 79.73% <ø> (ø)
libdd-common-ffi 73.40% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 80.74% <ø> (-0.12%) ⬇️
libdd-profiling 81.55% <ø> (-0.02%) ⬇️
libdd-profiling-ffi 63.65% <ø> (ø)
datadog-sidecar 33.46% <ø> (ø)
datdog-sidecar-ffi 12.49% <ø> (ø)
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 94.24% <95.45%> (+0.03%) ⬆️
libdd-trace-protobuf 68.00% <ø> (ø)
libdd-trace-utils 89.18% <ø> (ø)
datadog-tracer-flare 88.95% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter
Copy link

pr-commenter bot commented Feb 26, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-02-26 16:35:42

Comparing candidate commit dfa071c in PR branch oscarld/redis-obfuscation-parity with baseline commit 40898a4 in branch main.

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

scenario:sql/obfuscate_sql_string

  • 🟩 execution_time [-5.533µs; -5.457µs] or [-6.083%; -6.001%]

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 dfa071c 1772122732 oscarld/redis-obfuscation-parity
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 144.991µs 147.249µs ± 1.636µs 146.991µs ± 0.543µs 147.596µs 149.339µs 152.556µs 161.922µs 10.16% 4.866 35.868 1.11% 0.116µ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 [147.022µs; 147.476µs] or [-0.154%; +0.154%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.967µs 5.068µs ± 0.061µs 5.044µs ± 0.046µs 5.112µs 5.167µs 5.169µs 5.170µs 2.50% 0.285 -1.206 1.19% 0.004µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.059µs; 5.076µs] or [-0.166%; +0.166%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 4.143ms 4.148ms ± 0.007ms 4.147ms ± 0.001ms 4.148ms 4.151ms 4.154ms 4.235ms 2.12% 11.849 154.733 0.16% 0.000ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [4.147ms; 4.149ms] or [-0.022%; +0.022%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 241.132ns 251.120ns ± 12.804ns 244.954ns ± 2.589ns 256.669ns 284.444ns 288.605ns 289.966ns 18.38% 1.688 1.849 5.09% 0.905ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [249.345ns; 252.895ns] or [-0.707%; +0.707%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 47.637ms 48.067ms ± 0.977ms 47.911ms ± 0.069ms 48.004ms 48.123ms 54.687ms 56.464ms 17.85% 7.415 56.029 2.03% 0.069ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [47.931ms; 48.202ms] or [-0.282%; +0.282%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 18.163µs 26.956µs ± 9.412µs 19.908µs ± 0.981µs 34.085µs 43.344µs 52.809µs 76.091µs 282.22% 1.319 2.919 34.83% 0.666µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [25.651µs; 28.260µs] or [-4.839%; +4.839%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
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 188.526ns 191.492ns ± 2.023ns 191.299ns ± 1.460ns 192.394ns 195.685ns 197.910ns 198.692ns 3.86% 1.049 0.993 1.05% 0.143ns 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 [191.212ns; 191.773ns] or [-0.146%; +0.146%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 160.966µs 161.686µs ± 0.288µs 161.652µs ± 0.142µs 161.821µs 162.118µs 162.357µs 164.208µs 1.58% 3.500 27.803 0.18% 0.020µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [161.646µs; 161.725µs] or [-0.025%; +0.025%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 14.791ms 14.845ms ± 0.034ms 14.840ms ± 0.017ms 14.858ms 14.898ms 14.962ms 15.047ms 1.39% 2.084 7.836 0.23% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [14.840ms; 14.850ms] or [-0.031%; +0.031%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 10.602ms 10.632ms ± 0.015ms 10.630ms ± 0.010ms 10.640ms 10.656ms 10.669ms 10.710ms 0.76% 1.147 3.497 0.14% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [10.630ms; 10.634ms] or [-0.020%; +0.020%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.895µs 3.913µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.917µs 3.918µs 3.919µs 0.17% -1.165 8.845 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 255161810.623op/s 255589284.987op/s ± 172182.318op/s 255599412.131op/s ± 108608.899op/s 255695687.722op/s 255813204.958op/s 255891192.677op/s 256747275.199op/s 0.45% 1.184 8.985 0.07% 12175.128op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 76.754µs 77.807µs ± 0.590µs 77.787µs ± 0.431µs 78.230µs 78.852µs 79.100µs 79.697µs 2.46% 0.335 -0.360 0.76% 0.042µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12547515.203op/s 12853048.823op/s ± 97210.269op/s 12855670.556op/s ± 71156.204op/s 12920874.679op/s 13009165.188op/s 13027026.484op/s 13028557.993op/s 1.34% -0.301 -0.406 0.75% 6873.804op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 69.830µs 70.913µs ± 0.610µs 70.823µs ± 0.351µs 71.244µs 72.027µs 72.856µs 73.445µs 3.70% 0.889 1.482 0.86% 0.043µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13615672.818op/s 14102777.587op/s ± 120490.917op/s 14119666.578op/s ± 69610.312op/s 14180024.751op/s 14279746.165op/s 14305656.407op/s 14320563.893op/s 1.42% -0.822 1.273 0.85% 8519.994op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.895µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.918µs 3.919µs 3.922µs 0.25% -0.358 6.582 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255000352.310op/s 255611053.290op/s ± 184227.905op/s 255635039.210op/s ± 103142.553op/s 255727623.158op/s 255823285.165op/s 255877511.703op/s 256736133.134op/s 0.43% 0.376 6.677 0.07% 13026.880op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 66.713µs 67.867µs ± 0.603µs 67.771µs ± 0.431µs 68.265µs 68.904µs 69.302µs 69.635µs 2.75% 0.424 -0.407 0.89% 0.043µs 1 200
credit_card/is_card_number/378282246310005 throughput 14360632.151op/s 14735952.713op/s ± 130567.594op/s 14755582.576op/s ± 94018.175op/s 14840277.443op/s 14933122.773op/s 14959745.751op/s 14989661.185op/s 1.59% -0.386 -0.453 0.88% 9232.523op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 52.156µs 52.217µs ± 0.034µs 52.213µs ± 0.021µs 52.237µs 52.282µs 52.302µs 52.407µs 0.37% 1.289 4.342 0.06% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19081555.063op/s 19150680.603op/s ± 12311.052op/s 19152356.598op/s ± 7545.559op/s 19158612.608op/s 19168453.231op/s 19171459.640op/s 19173303.093op/s 0.11% -1.280 4.289 0.06% 870.523op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.029µs 6.040µs ± 0.014µs 6.037µs ± 0.003µs 6.040µs 6.074µs 6.110µs 6.137µs 1.65% 3.836 17.562 0.23% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 162956641.240op/s 165561510.408op/s ± 379336.542op/s 165647539.425op/s ± 85278.948op/s 165735392.794op/s 165806552.265op/s 165826286.873op/s 165860287.382op/s 0.13% -3.803 17.226 0.23% 26823.144op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.894µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.915µs 3.918µs 3.919µs 3.920µs 0.17% -1.185 6.890 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255099291.111op/s 255542552.768op/s ± 194672.455op/s 255526370.094op/s ± 127164.403op/s 255674586.678op/s 255804208.509op/s 255895564.498op/s 256788545.784op/s 0.49% 1.202 7.012 0.08% 13765.421op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.210µs 64.508µs ± 0.152µs 64.488µs ± 0.101µs 64.601µs 64.800µs 64.880µs 64.926µs 0.68% 0.568 -0.205 0.24% 0.011µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15402099.958op/s 15501957.189op/s ± 36508.441op/s 15506818.751op/s ± 24279.860op/s 15529995.826op/s 15551219.920op/s 15565743.585op/s 15573867.051op/s 0.43% -0.558 -0.218 0.23% 2581.537op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 58.130µs 58.373µs ± 0.148µs 58.353µs ± 0.086µs 58.442µs 58.648µs 58.811µs 59.106µs 1.29% 1.404 3.532 0.25% 0.010µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 16918855.986op/s 17131385.069op/s ± 43401.830op/s 17137044.496op/s ± 25174.137op/s 17161482.340op/s 17182819.136op/s 17199369.717op/s 17202965.791op/s 0.38% -1.377 3.402 0.25% 3068.973op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.895µs 3.913µs ± 0.003µs 3.913µs ± 0.002µs 3.914µs 3.917µs 3.923µs 3.928µs 0.38% 0.398 9.434 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254610202.836op/s 255561874.097op/s ± 201180.056op/s 255582684.273op/s ± 103175.040op/s 255681178.778op/s 255785106.568op/s 255869830.927op/s 256741395.221op/s 0.45% -0.371 9.476 0.08% 14225.578op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 54.576µs 54.928µs ± 0.268µs 54.865µs ± 0.186µs 55.086µs 55.426µs 55.671µs 55.853µs 1.80% 0.867 0.229 0.49% 0.019µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17904255.714op/s 18206036.560op/s ± 88597.125op/s 18226721.285op/s ± 62077.234op/s 18287387.200op/s 18307609.842op/s 18320427.317op/s 18322972.800op/s 0.53% -0.845 0.167 0.49% 6264.763op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 52.143µs 52.223µs ± 0.039µs 52.217µs ± 0.027µs 52.249µs 52.283µs 52.342µs 52.394µs 0.34% 0.839 1.474 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19086238.385op/s 19148678.125op/s ± 14207.126op/s 19150776.761op/s ± 9903.874op/s 19159166.070op/s 19167459.787op/s 19172199.448op/s 19177889.811op/s 0.14% -0.833 1.451 0.07% 1004.595op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.028µs 6.039µs ± 0.012µs 6.036µs ± 0.003µs 6.040µs 6.071µs 6.075µs 6.108µs 1.20% 2.760 8.557 0.19% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 163715166.437op/s 165586565.058op/s ± 314769.212op/s 165672837.969op/s ± 87320.476op/s 165751200.547op/s 165835099.222op/s 165885336.725op/s 165900507.353op/s 0.14% -2.743 8.419 0.19% 22257.544op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ throughput [255565422.174op/s; 255613147.800op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [77.725µs; 77.889µs] or [-0.105%; +0.105%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12839576.415op/s; 12866521.231op/s] or [-0.105%; +0.105%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [70.829µs; 70.998µs] or [-0.119%; +0.119%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14086078.705op/s; 14119476.469op/s] or [-0.118%; +0.118%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255585521.074op/s; 255636585.505op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [67.783µs; 67.950µs] or [-0.123%; +0.123%] None None None
credit_card/is_card_number/378282246310005 throughput [14717857.300op/s; 14754048.126op/s] or [-0.123%; +0.123%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [52.213µs; 52.222µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19148974.409op/s; 19152386.796op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.038µs; 6.042µs] or [-0.032%; +0.032%] None None None
credit_card/is_card_number/x371413321323331 throughput [165508938.012op/s; 165614082.804op/s] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.913µs; 3.914µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255515573.038op/s; 255569532.498op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.487µs; 64.529µs] or [-0.033%; +0.033%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15496897.470op/s; 15507016.908op/s] or [-0.033%; +0.033%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [58.352µs; 58.393µs] or [-0.035%; +0.035%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17125369.992op/s; 17137400.145op/s] or [-0.035%; +0.035%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.913µs; 3.913µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255533992.476op/s; 255589755.718op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [54.891µs; 54.965µs] or [-0.068%; +0.068%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [18193757.851op/s; 18218315.269op/s] or [-0.067%; +0.067%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [52.218µs; 52.228µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19146709.154op/s; 19150647.096op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.038µs; 6.041µs] or [-0.026%; +0.026%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [165542941.073op/s; 165630189.044op/s] or [-0.026%; +0.026%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2597 execution_time 3.131ms 3.155ms ± 0.012ms 3.154ms ± 0.008ms 3.162ms 3.177ms 3.188ms 3.205ms 1.62% 0.733 1.057 0.39% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2597 execution_time [3.154ms; 3.157ms] or [-0.055%; +0.055%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 1.228µs 3.247µs ± 1.474µs 2.981µs ± 0.032µs 3.024µs 3.776µs 14.078µs 15.620µs 423.95% 7.231 54.191 45.28% 0.104µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [3.043µs; 3.451µs] or [-6.290%; +6.290%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 185.324µs 185.844µs ± 0.237µs 185.840µs ± 0.164µs 185.995µs 186.285µs 186.414µs 186.509µs 0.36% 0.323 -0.306 0.13% 0.017µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5361680.898op/s 5380864.501op/s ± 6859.581op/s 5380972.881op/s ± 4735.105op/s 5385957.193op/s 5390660.892op/s 5394592.929op/s 5395969.022op/s 0.28% -0.317 -0.312 0.13% 485.046op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.965µs 18.090µs ± 0.049µs 18.090µs ± 0.030µs 18.117µs 18.165µs 18.188µs 18.384µs 1.62% 1.324 6.415 0.27% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 54395946.725op/s 55278556.269op/s ± 149603.330op/s 55278877.292op/s ± 90619.796op/s 55373111.237op/s 55491214.762op/s 55618769.694op/s 55663061.665op/s 0.69% -1.271 6.102 0.27% 10578.553op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.283µs 10.357µs ± 0.039µs 10.350µs ± 0.025µs 10.379µs 10.425µs 10.476µs 10.531µs 1.75% 1.012 2.124 0.38% 0.003µs 1 200
normalization/normalize_name/normalize_name/good throughput 94954191.796op/s 96556349.134op/s ± 364605.510op/s 96615069.122op/s ± 231240.458op/s 96790905.078op/s 97052547.328op/s 97231845.460op/s 97245592.270op/s 0.65% -0.977 1.991 0.38% 25781.503op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [185.811µs; 185.877µs] or [-0.018%; +0.018%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5379913.829op/s; 5381815.173op/s] or [-0.018%; +0.018%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.084µs; 18.097µs] or [-0.038%; +0.038%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55257822.686op/s; 55299289.852op/s] or [-0.038%; +0.038%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.351µs; 10.362µs] or [-0.053%; +0.053%] None None None
normalization/normalize_name/normalize_name/good throughput [96505818.317op/s; 96606879.951op/s] or [-0.052%; +0.052%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 726.827µs 727.995µs ± 0.535µs 727.963µs ± 0.350µs 728.296µs 728.987µs 729.414µs 729.590µs 0.22% 0.522 0.105 0.07% 0.038µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [727.921µs; 728.070µs] or [-0.010%; +0.010%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 85.065µs 85.450µs ± 0.197µs 85.433µs ± 0.045µs 85.479µs 85.550µs 86.318µs 87.668µs 2.62% 8.031 82.116 0.23% 0.014µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [85.422µs; 85.477µs] or [-0.032%; +0.032%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 33.582µs 34.251µs ± 1.189µs 33.716µs ± 0.045µs 33.772µs 36.794µs 36.824µs 38.289µs 13.56% 1.738 1.158 3.46% 0.084µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [34.086µs; 34.415µs] or [-0.481%; +0.481%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.313µs 2.383µs ± 0.020µs 2.384µs ± 0.008µs 2.393µs 2.417µs 2.425µs 2.427µs 1.79% -1.339 3.358 0.86% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.381µs; 2.386µs] or [-0.119%; +0.119%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz dfa071c 1772122732 oscarld/redis-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 534.414µs 535.825µs ± 1.274µs 535.331µs ± 0.438µs 536.540µs 538.207µs 540.005µs 542.065µs 1.26% 1.810 4.053 0.24% 0.090µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1844796.210op/s 1866292.441op/s ± 4418.958op/s 1868004.290op/s ± 1530.552op/s 1869081.916op/s 1870522.674op/s 1870938.374op/s 1871207.022op/s 0.17% -1.790 3.932 0.24% 312.467op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 381.192µs 381.937µs ± 0.312µs 381.905µs ± 0.179µs 382.090µs 382.476µs 382.970µs 383.103µs 0.31% 0.729 1.320 0.08% 0.022µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2610263.784op/s 2618233.102op/s ± 2139.455op/s 2618455.512op/s ± 1227.449op/s 2619632.643op/s 2621162.841op/s 2622750.499op/s 2623350.212op/s 0.19% -0.722 1.305 0.08% 151.282op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 189.900µs 190.399µs ± 0.348µs 190.371µs ± 0.138µs 190.501µs 190.772µs 190.950µs 194.333µs 2.08% 7.345 80.317 0.18% 0.025µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5145803.709op/s 5252141.524op/s ± 9460.673op/s 5252895.254op/s ± 3804.940op/s 5256845.247op/s 5260596.460op/s 5263205.893op/s 5265919.482op/s 0.25% -7.191 77.998 0.18% 668.971op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 37.469µs 37.649µs ± 0.063µs 37.648µs ± 0.047µs 37.692µs 37.748µs 37.775µs 37.833µs 0.49% 0.103 -0.328 0.17% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26431763.806op/s 26561439.180op/s ± 44382.911op/s 26561741.464op/s ± 33324.253op/s 26596863.621op/s 26627035.916op/s 26653674.797op/s 26688636.074op/s 0.48% -0.095 -0.330 0.17% 3138.346op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.811µs 45.909µs ± 0.054µs 45.900µs ± 0.031µs 45.935µs 46.002µs 46.078µs 46.154µs 0.55% 1.195 2.259 0.12% 0.004µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21666789.215op/s 21782228.764op/s ± 25577.171op/s 21786696.882op/s ± 14663.911op/s 21800241.948op/s 21814680.415op/s 21820512.226op/s 21828960.342op/s 0.19% -1.186 2.218 0.12% 1808.579op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [535.648µs; 536.001µs] or [-0.033%; +0.033%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1865680.016op/s; 1866904.866op/s] or [-0.033%; +0.033%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [381.894µs; 381.980µs] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2617936.594op/s; 2618529.609op/s] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.351µs; 190.447µs] or [-0.025%; +0.025%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5250830.366op/s; 5253452.682op/s] or [-0.025%; +0.025%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.640µs; 37.657µs] or [-0.023%; +0.023%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26555288.136op/s; 26567590.225op/s] or [-0.023%; +0.023%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.902µs; 45.917µs] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21778684.014op/s; 21785773.514op/s] or [-0.016%; +0.016%] None None None

Baseline

Omitted due to size.

Eldolfin and others added 2 commits February 26, 2026 17:15
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@dd-octo-sts
Copy link
Contributor

dd-octo-sts bot commented Feb 26, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 97.27 MB 97.27 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.51 MB 8.51 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.12 MB 11.12 MB 0% (0 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 112.87 MB 112.87 MB 0% (0 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.15 MB 27.15 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 185.89 MB 185.89 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 914.84 MB 914.84 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.93 MB 9.93 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 76.26 KB 76.26 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.76 MB 24.76 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 51.40 MB 51.40 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.96 MB 22.96 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.10 MB 190.11 MB +0% (+8.00 KB) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 898.43 MB 898.43 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.53 MB 7.53 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.44 KB 77.44 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.51 MB 26.51 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 47.03 MB 47.03 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 85.23 MB 85.23 MB 0% (0 B) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.04 MB 10.04 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 105.85 MB 105.85 MB 0% (0 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.78 MB 11.78 MB 0% (0 B) 👌

@Eldolfin Eldolfin changed the title feat: redis obfuscation parity [APMSP-2668] Reach feature parity on redis obfuscation Feb 27, 2026
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