Skip to content

Reach feature parity on credit card obfuscation#1633

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit intomainfrom
oscarld/credit-card-luhn-validation-fix
Feb 26, 2026
Merged

Reach feature parity on credit card obfuscation#1633
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit intomainfrom
oscarld/credit-card-luhn-validation-fix

Conversation

@Eldolfin
Copy link
Copy Markdown
Contributor

What does this PR do?

  • Fix a small logic error in calculate_luhn

Motivation

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

Copy link
Copy Markdown

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

Fixes Luhn checksum computation in the credit card detector used by libdd-trace-obfuscation, aligning behavior with the Datadog Agent implementation.

Changes:

  • Correct Luhn digit transformation (dbl_x - 9) and checksum calculation ((10 - (acc % 10)) % 10) in calculate_luhn.
  • Update existing “valid cards” test to exercise the Luhn-validation path.
  • Add targeted unit tests for luhn_valid and additional calculate_luhn cases (odd/even payload lengths).

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

@github-actions
Copy link
Copy Markdown

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/oscarld/credit-card-luhn-validation-fix

Summary by Rule

Rule Base Branch PR Branch Change
unwrap_used 4 4 No change (0%)
Total 4 4 No change (0%)

Annotation Counts by File

File Base Branch PR Branch Change
libdd-trace-obfuscation/src/credit_cards.rs 4 4 No change (0%)

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.

@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Feb 26, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-02-26 16:34:45

Comparing candidate commit 7a23859 in PR branch oscarld/credit-card-luhn-validation-fix with baseline commit 40898a4 in branch main.

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

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 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.640ms 10.667ms ± 0.013ms 10.665ms ± 0.007ms 10.674ms 10.687ms 10.701ms 10.748ms 0.77% 1.917 8.628 0.12% 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.665ms; 10.669ms] or [-0.017%; +0.017%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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 90.111µs 90.310µs ± 0.268µs 90.278µs ± 0.057µs 90.328µs 90.533µs 90.806µs 93.753µs 3.85% 10.722 133.787 0.30% 0.019µ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 [90.273µs; 90.347µs] or [-0.041%; +0.041%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.293µs 146.677µs ± 1.653µs 146.476µs ± 0.590µs 147.035µs 148.104µs 153.261µs 161.719µs 10.41% 5.213 38.728 1.12% 0.117µ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 [146.448µs; 146.906µs] or [-0.156%; +0.156%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.205µs 3.263µs ± 1.471µs 3.089µs ± 0.027µs 3.112µs 3.420µs 14.126µs 15.701µs 408.29% 7.528 57.273 44.95% 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.059µs; 3.467µs] or [-6.246%; +6.246%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.614ms 47.985ms ± 1.034ms 47.866ms ± 0.086ms 47.935ms 48.108ms 52.062ms 60.139ms 25.64% 9.524 100.554 2.15% 0.073ms 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.842ms; 48.128ms] or [-0.299%; +0.299%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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 238.993ns 251.001ns ± 13.713ns 243.585ns ± 2.234ns 255.101ns 279.563ns 291.031ns 292.108ns 19.92% 1.451 0.833 5.45% 0.970ns 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.101ns; 252.902ns] or [-0.757%; +0.757%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.364µs 2.421µs ± 0.029µs 2.413µs ± 0.005µs 2.419µs 2.493µs 2.515µs 2.518µs 4.33% 1.777 2.769 1.19% 0.002µ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.417µs; 2.425µs] or [-0.165%; +0.165%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.938µs 161.686µs ± 0.425µs 161.625µs ± 0.160µs 161.773µs 162.333µs 162.834µs 165.572µs 2.44% 4.503 34.770 0.26% 0.030µ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.627µs; 161.744µs] or [-0.036%; +0.036%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.116µs 25.867µs ± 9.354µs 18.392µs ± 0.176µs 33.739µs 42.406µs 45.585µs 68.775µs 273.95% 0.937 0.699 36.07% 0.661µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [24.571µs; 27.164µs] or [-5.012%; +5.012%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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 721.533µs 723.097µs ± 0.752µs 723.034µs ± 0.492µs 723.523µs 724.175µs 725.035µs 726.978µs 0.55% 1.176 3.608 0.10% 0.053µ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 [722.993µs; 723.202µs] or [-0.014%; +0.014%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.409µs 185.845µs ± 0.225µs 185.854µs ± 0.167µs 186.010µs 186.234µs 186.334µs 186.396µs 0.29% 0.160 -0.633 0.12% 0.016µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5364924.153op/s 5380838.908op/s ± 6511.356op/s 5380565.733op/s ± 4828.946op/s 5386079.932op/s 5391129.876op/s 5392801.517op/s 5393495.256op/s 0.24% -0.155 -0.636 0.12% 460.422op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.856µs 17.979µs ± 0.052µs 17.977µs ± 0.035µs 18.011µs 18.058µs 18.109µs 18.222µs 1.36% 0.625 1.689 0.29% 0.004µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 54878743.341op/s 55622280.036op/s ± 159944.914op/s 55627544.170op/s ± 106956.638op/s 55736190.789op/s 55857471.449op/s 55932655.176op/s 56003162.532op/s 0.68% -0.597 1.588 0.29% 11309.813op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.287µs 10.397µs ± 0.075µs 10.377µs ± 0.049µs 10.454µs 10.538µs 10.601µs 10.631µs 2.45% 0.823 -0.039 0.72% 0.005µs 1 200
normalization/normalize_name/normalize_name/good throughput 94063254.688op/s 96187230.688op/s ± 691645.166op/s 96368548.519op/s ± 456116.345op/s 96690745.666op/s 97048761.860op/s 97165644.295op/s 97209068.722op/s 0.87% -0.795 -0.101 0.72% 48906.699op/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.814µs; 185.876µs] or [-0.017%; +0.017%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5379936.496op/s; 5381741.319op/s] or [-0.017%; +0.017%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.971µs; 17.986µs] or [-0.040%; +0.040%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55600113.209op/s; 55644446.863op/s] or [-0.040%; +0.040%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.387µs; 10.407µs] or [-0.100%; +0.100%] None None None
normalization/normalize_name/normalize_name/good throughput [96091375.320op/s; 96283086.056op/s] or [-0.100%; +0.100%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.776µs 34.288µs ± 0.855µs 33.907µs ± 0.052µs 33.977µs 36.107µs 36.174µs 37.360µs 10.18% 1.751 1.273 2.49% 0.060µ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.169µs; 34.406µs] or [-0.346%; +0.346%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.191ms 4.197ms ± 0.008ms 4.196ms ± 0.002ms 4.198ms 4.201ms 4.221ms 4.291ms 2.27% 8.810 96.811 0.19% 0.001ms 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.196ms; 4.198ms] or [-0.026%; +0.026%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.153ms 3.264ms ± 0.080ms 3.219ms ± 0.057ms 3.341ms 3.352ms 3.369ms 3.546ms 10.15% 0.193 -1.264 2.44% 0.006ms 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.253ms; 3.275ms] or [-0.339%; +0.339%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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 533.954µs 534.800µs ± 0.613µs 534.669µs ± 0.242µs 534.933µs 535.791µs 537.280µs 538.439µs 0.71% 2.655 10.055 0.11% 0.043µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1857219.783op/s 1869861.184op/s ± 2135.740op/s 1870316.130op/s ± 848.155op/s 1871137.460op/s 1871997.584op/s 1872595.387op/s 1872819.267op/s 0.13% -2.637 9.936 0.11% 151.020op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 380.459µs 381.138µs ± 0.291µs 381.113µs ± 0.172µs 381.308µs 381.678µs 381.885µs 382.096µs 0.26% 0.442 0.435 0.08% 0.021µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2617144.892op/s 2623720.695op/s ± 2003.935op/s 2623890.571op/s ± 1185.124op/s 2624979.213op/s 2626934.976op/s 2627800.874op/s 2628405.996op/s 0.17% -0.437 0.428 0.08% 141.700op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 190.008µs 190.410µs ± 0.170µs 190.390µs ± 0.110µs 190.502µs 190.704µs 190.809µs 191.101µs 0.37% 0.725 1.354 0.09% 0.012µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5232821.653op/s 5251840.115op/s ± 4693.451op/s 5252380.237op/s ± 3023.679op/s 5255352.172op/s 5259042.747op/s 5260434.396op/s 5262942.689op/s 0.20% -0.718 1.332 0.09% 331.877op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 37.391µs 37.550µs ± 0.056µs 37.551µs ± 0.039µs 37.588µs 37.636µs 37.669µs 37.733µs 0.49% 0.004 0.236 0.15% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26501687.353op/s 26630995.519op/s ± 39932.858op/s 26630738.419op/s ± 27857.041op/s 26659013.838op/s 26696411.990op/s 26721031.844op/s 26744267.494op/s 0.43% 0.006 0.232 0.15% 2823.679op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.787µs 45.897µs ± 0.074µs 45.888µs ± 0.030µs 45.919µs 45.992µs 46.062µs 46.643µs 1.64% 5.430 49.380 0.16% 0.005µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21439658.795op/s 21787927.421op/s ± 34987.691op/s 21792276.745op/s ± 14315.790op/s 21805335.175op/s 21822330.177op/s 21830641.709op/s 21840281.536op/s 0.22% -5.326 47.942 0.16% 2474.003op/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 [534.715µs; 534.885µs] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1869565.191op/s; 1870157.177op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [381.098µs; 381.179µs] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2623442.969op/s; 2623998.421op/s] or [-0.011%; +0.011%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.386µs; 190.433µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5251189.648op/s; 5252490.583op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.543µs; 37.558µs] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [26625461.209op/s; 26636529.829op/s] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [45.887µs; 45.907µs] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21783078.464op/s; 21792776.379op/s] or [-0.022%; +0.022%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.407ns 190.745ns ± 1.690ns 190.662ns ± 1.255ns 191.770ns 193.723ns 195.514ns 198.645ns 4.19% 1.002 1.727 0.88% 0.119ns 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 [190.511ns; 190.979ns] or [-0.123%; +0.123%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.792ms 14.852ms ± 0.037ms 14.847ms ± 0.017ms 14.865ms 14.905ms 15.003ms 15.076ms 1.54% 2.420 9.395 0.25% 0.003ms 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.847ms; 14.857ms] or [-0.034%; +0.034%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.950µs 5.023µs ± 0.032µs 5.020µs ± 0.020µs 5.045µs 5.075µs 5.078µs 5.083µs 1.25% 0.051 -0.725 0.63% 0.002µ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.019µs; 5.028µs] or [-0.088%; +0.088%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 7a23859 1772121977 oscarld/credit-card-luhn-validation-fix
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.912µs ± 0.003µs 3.912µs ± 0.001µs 3.913µs 3.917µs 3.918µs 3.918µs 0.16% -0.884 8.113 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 255217607.459op/s 255613226.308op/s ± 167982.121op/s 255636159.735op/s ± 90865.874op/s 255714835.140op/s 255814006.342op/s 255906710.078op/s 256714371.415op/s 0.42% 0.903 8.237 0.07% 11878.130op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 78.926µs 79.676µs ± 0.406µs 79.655µs ± 0.271µs 79.893µs 80.474µs 80.691µs 80.898µs 1.56% 0.590 -0.006 0.51% 0.029µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12361299.596op/s 12551127.115op/s ± 63768.738op/s 12554211.888op/s ± 42826.551op/s 12598769.415op/s 12642598.802op/s 12657759.345op/s 12670046.351op/s 0.92% -0.565 -0.046 0.51% 4509.131op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 72.253µs 72.830µs ± 0.342µs 72.780µs ± 0.237µs 73.035µs 73.464µs 73.789µs 74.218µs 1.98% 0.853 0.914 0.47% 0.024µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13473737.489op/s 13730977.718op/s ± 64231.815op/s 13739960.497op/s ± 44898.903op/s 13779457.648op/s 13818177.191op/s 13826770.046op/s 13840266.872op/s 0.73% -0.823 0.814 0.47% 4541.875op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.893µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.913µs 3.917µs 3.921µs 3.922µs 0.26% -0.466 10.055 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254984030.341op/s 255612028.729op/s ± 191703.321op/s 255635809.854op/s ± 85312.721op/s 255718392.547op/s 255821453.793op/s 255863869.810op/s 256889733.422op/s 0.49% 0.493 10.207 0.07% 13555.472op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.186µs 69.712µs ± 0.313µs 69.666µs ± 0.221µs 69.897µs 70.296µs 70.477µs 70.737µs 1.54% 0.651 -0.061 0.45% 0.022µs 1 200
credit_card/is_card_number/378282246310005 throughput 14136857.940op/s 14345063.967op/s ± 64243.552op/s 14354107.943op/s ± 45463.629op/s 14397890.349op/s 14427524.912op/s 14439031.665op/s 14453881.178op/s 0.70% -0.631 -0.108 0.45% 4542.705op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 52.159µs 52.220µs ± 0.031µs 52.216µs ± 0.021µs 52.238µs 52.272µs 52.300µs 52.361µs 0.28% 0.870 1.480 0.06% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19098126.772op/s 19149735.508op/s ± 11470.266op/s 19151163.575op/s ± 7847.381op/s 19158704.849op/s 19165165.874op/s 19167502.937op/s 19172018.439op/s 0.11% -0.865 1.460 0.06% 811.070op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.027µs 6.039µs ± 0.013µs 6.035µs ± 0.003µs 6.038µs 6.071µs 6.078µs 6.110µs 1.24% 3.032 10.026 0.21% 0.001µs 1 200
credit_card/is_card_number/x371413321323331 throughput 163660556.936op/s 165598977.435op/s ± 349133.761op/s 165693873.865op/s ± 75947.674op/s 165768989.054op/s 165843350.250op/s 165891910.712op/s 165919029.109op/s 0.14% -3.014 9.877 0.21% 24687.485op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.901µs 3.913µs ± 0.002µs 3.912µs ± 0.001µs 3.914µs 3.917µs 3.919µs 3.922µs 0.25% 0.151 3.571 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254951759.656op/s 255581452.368op/s ± 157863.556op/s 255593661.279op/s ± 91213.321op/s 255686473.167op/s 255772073.228op/s 255899809.664op/s 256366973.073op/s 0.30% -0.141 3.591 0.06% 11162.639op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.087µs 64.455µs ± 0.156µs 64.421µs ± 0.074µs 64.523µs 64.747µs 64.940µs 65.119µs 1.08% 1.136 2.444 0.24% 0.011µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15356613.040op/s 15514774.610op/s ± 37361.149op/s 15522979.632op/s ± 17835.452op/s 15538164.323op/s 15562453.361op/s 15586820.350op/s 15603732.413op/s 0.52% -1.113 2.367 0.24% 2641.832op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 58.179µs 58.463µs ± 0.133µs 58.440µs ± 0.084µs 58.527µs 58.714µs 58.826µs 58.938µs 0.85% 0.823 0.477 0.23% 0.009µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 16966997.316op/s 17105046.017op/s ± 38736.172op/s 17111691.694op/s ± 24575.184op/s 17134864.810op/s 17153313.742op/s 17170593.864op/s 17188219.195op/s 0.45% -0.811 0.448 0.23% 2739.061op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.894µs 3.913µs ± 0.002µs 3.913µs ± 0.002µs 3.914µs 3.916µs 3.918µs 3.918µs 0.14% -1.796 12.786 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255226603.479op/s 255589850.299op/s ± 162571.447op/s 255583067.627op/s ± 113598.498op/s 255700969.938op/s 255795039.881op/s 255842527.226op/s 256784779.293op/s 0.47% 1.818 12.979 0.06% 11495.537op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 54.602µs 54.967µs ± 0.316µs 54.886µs ± 0.208µs 55.121µs 55.608µs 55.841µs 56.258µs 2.50% 1.195 1.293 0.57% 0.022µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17775204.852op/s 18193461.227op/s ± 103766.531op/s 18219691.259op/s ± 69187.274op/s 18282186.295op/s 18305342.872op/s 18313999.917op/s 18314486.759op/s 0.52% -1.164 1.172 0.57% 7337.402op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 52.148µs 52.219µs ± 0.038µs 52.213µs ± 0.022µs 52.238µs 52.286µs 52.323µs 52.428µs 0.41% 1.477 4.608 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19073720.526op/s 19150116.607op/s ± 13877.616op/s 19152422.510op/s ± 8130.118op/s 19159929.881op/s 19167804.988op/s 19172197.036op/s 19176282.773op/s 0.12% -1.467 4.552 0.07% 981.296op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.027µs 6.040µs ± 0.013µs 6.035µs ± 0.003µs 6.040µs 6.072µs 6.079µs 6.110µs 1.25% 2.343 5.765 0.21% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 163658066.119op/s 165568352.948op/s ± 352931.608op/s 165706980.428op/s ± 80151.799op/s 165764488.103op/s 165813964.691op/s 165859379.361op/s 165916086.737op/s 0.13% -2.329 5.657 0.21% 24956.033op/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 [255589945.602op/s; 255636507.015op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.620µs; 79.732µs] or [-0.071%; +0.071%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12542289.381op/s; 12559964.848op/s] or [-0.070%; +0.070%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [72.782µs; 72.877µs] or [-0.065%; +0.065%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13722075.806op/s; 13739879.629op/s] or [-0.065%; +0.065%] 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 [255585460.492op/s; 255638596.966op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [69.668µs; 69.755µs] or [-0.062%; +0.062%] None None None
credit_card/is_card_number/378282246310005 throughput [14336160.428op/s; 14353967.505op/s] or [-0.062%; +0.062%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [52.216µs; 52.224µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19148145.840op/s; 19151325.177op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.037µs; 6.040µs] or [-0.029%; +0.029%] None None None
credit_card/is_card_number/x371413321323331 throughput [165550590.854op/s; 165647364.017op/s] or [-0.029%; +0.029%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ throughput [255559573.997op/s; 255603330.739op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.433µs; 64.477µs] or [-0.033%; +0.033%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15509596.714op/s; 15519952.506op/s] or [-0.033%; +0.033%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [58.444µs; 58.481µs] or [-0.031%; +0.031%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17099677.556op/s; 17110414.478op/s] or [-0.031%; +0.031%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255567319.460op/s; 255612381.138op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [54.923µs; 55.010µs] or [-0.080%; +0.080%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [18179080.184op/s; 18207842.271op/s] or [-0.079%; +0.079%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [52.214µs; 52.224µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19148193.303op/s; 19152039.911op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.038µs; 6.042µs] or [-0.030%; +0.030%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [165519440.022op/s; 165617265.875op/s] or [-0.030%; +0.030%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.24%. Comparing base (40898a4) to head (7a23859).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1633      +/-   ##
==========================================
+ Coverage   71.19%   71.24%   +0.04%     
==========================================
  Files         423      423              
  Lines       62453    62463      +10     
==========================================
+ Hits        44466    44499      +33     
+ Misses      17987    17964      -23     
Components Coverage Δ
libdd-crashtracker 63.25% <ø> (-0.02%) ⬇️
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.86% <ø> (ø)
libdd-profiling 81.56% <ø> (ø)
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.67% <100.00%> (+0.46%) ⬆️
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.

@dd-octo-sts
Copy link
Copy Markdown
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.so 8.51 MB 8.51 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 97.27 MB 97.27 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.90 MB +0% (+8.00 KB) 👌
/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) 👌

@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d bot merged commit 195b024 into main Feb 26, 2026
96 of 102 checks passed
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d bot deleted the oscarld/credit-card-luhn-validation-fix branch February 26, 2026 22:06
@Eldolfin Eldolfin changed the title fix: credit card luhn validation for obfuscation [APMSP-2651] Reach feature parity on credit card obfuscation Feb 27, 2026
gh-worker-dd-mergequeue-cf854d bot pushed a commit that referenced this pull request Feb 27, 2026
# What does this PR do?

Bump version to 28.0.2

This includes:
- [chore: update bytes to 1.11.1 to address RUSTSEC-2026-0007](https://github.com/DataDog/libdatadog/pull/1628)[chore: update bytes to 1.11.1 to address RUSTSEC-2026-0007](#1628)
- [chore(release): merge release branch to main](https://github.com/DataDog/libdatadog/pull/1629)[chore(release): merge release branch to main](#1629)
- [fix: add ecs task metadata to unobfuscated ip addresses](https://github.com/DataDog/libdatadog/pull/1631)[fix: add ecs task metadata to unobfuscated ip addresses](#1631)
- [fix: credit card luhn validation for obfuscation](https://github.com/DataDog/libdatadog/pull/1633)[fix: credit card luhn validation for obfuscation](#1633)   
- [perf(profiling): cache TLS in ProfileExporter::new](https://github.com/DataDog/libdatadog/pull/1619)[perf(profiling): cache TLS in ProfileExporter::new](#1619)

# Motivation
[perf(profiling): cache TLS in ProfileExporter::new](https://github.com/DataDog/libdatadog/pull/1619)[perf(profiling): cache TLS in ProfileExporter::new](#1619) fixes slow TLS issue

# Additional Notes

Anything else we should know when reviewing?

# How to test the change?

Describe here in detail how the change can be validated.


Co-authored-by: gyuheon.oh <[email protected]>
@Eldolfin Eldolfin changed the title [APMSP-2651] Reach feature parity on credit card obfuscation Reach feature parity on credit card obfuscation Mar 4, 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.

4 participants