fix(obfuscation): prevent crash and cap recursion in SQL/HTTP obfuscation - #2441
fix(obfuscation): prevent crash and cap recursion in SQL/HTTP obfuscation#2441ajgajg1134 wants to merge 2 commits into
Conversation
…tion Cap recursion depth for nested dollar-quoted SQL strings so pathological nesting can no longer exhaust the stack and abort the process, and fix a fallback path in URL obfuscation that could return an unparseable URL with userinfo still attached instead of stripping it. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
📚 Documentation Check Results📦
|
🔒 Cargo Deny Results📦
|
|
BenchmarksComparisonBenchmark execution time: 2026-09-01 19:02:42 Comparing candidate commit 36c57ed in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 25 metrics, 0 unstable metrics.
|
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| 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 | 9.600ms | 9.627ms ± 0.018ms | 9.623ms ± 0.012ms | 9.637ms | 9.661ms | 9.676ms | 9.701ms | 0.82% | 1.076 | 1.278 | 0.19% | 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 | [9.624ms; 9.629ms] or [-0.026%; +0.026%] | None | None | None |
Group 2
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| scenario | metric | min | mean ± sd | median ± mad | p75 | p95 | p99 | max | peak_to_median_ratio | skewness | kurtosis | cv | sem | runs | sample_size |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| trace_buffer/1_senders/10us_delay | execution_time | 60.040ms | 60.082ms ± 0.033ms | 60.072ms ± 0.007ms | 60.084ms | 60.141ms | 60.209ms | 60.243ms | 0.28% | 2.489 | 7.108 | 0.05% | 0.002ms | 1 | 200 |
| trace_buffer/1_senders/10us_delay | throughput | 14939.502op/s | 14979.517op/s ± 8.175op/s | 14982.067op/s ± 1.832op/s | 14983.487op/s | 14987.613op/s | 14988.780op/s | 14989.949op/s | 0.05% | -2.484 | 7.081 | 0.05% | 0.578op/s | 1 | 200 |
| trace_buffer/1_senders/1us_delay | execution_time | 50.216ms | 50.739ms ± 0.222ms | 50.750ms ± 0.162ms | 50.890ms | 51.108ms | 51.159ms | 51.322ms | 1.13% | -0.086 | -0.476 | 0.44% | 0.016ms | 1 | 200 |
| trace_buffer/1_senders/1us_delay | throughput | 17536.455op/s | 17738.221op/s ± 77.663op/s | 17733.895op/s ± 56.442op/s | 17793.582op/s | 17866.033op/s | 17916.761op/s | 17922.719op/s | 1.06% | 0.105 | -0.475 | 0.44% | 5.492op/s | 1 | 200 |
| trace_buffer/1_senders/no_delay | execution_time | 347.167µs | 357.071µs ± 6.418µs | 356.732µs ± 2.088µs | 358.480µs | 363.405µs | 372.708µs | 426.281µs | 19.50% | 6.569 | 66.413 | 1.79% | 0.454µs | 1 | 200 |
| trace_buffer/1_senders/no_delay | throughput | 2111283.001op/s | 2521235.550op/s ± 40957.793op/s | 2522899.695op/s ± 14679.705op/s | 2540571.285op/s | 2562940.067op/s | 2583148.109op/s | 2592414.315op/s | 2.76% | -5.342 | 49.174 | 1.62% | 2896.153op/s | 1 | 200 |
| trace_buffer/2_senders/10us_delay | execution_time | 60.018ms | 60.128ms ± 0.042ms | 60.119ms ± 0.020ms | 60.144ms | 60.224ms | 60.254ms | 60.298ms | 0.30% | 1.414 | 2.546 | 0.07% | 0.003ms | 1 | 200 |
| trace_buffer/2_senders/10us_delay | throughput | 29851.915op/s | 29936.360op/s ± 20.721op/s | 29940.801op/s ± 9.916op/s | 29950.094op/s | 29959.701op/s | 29963.493op/s | 29990.912op/s | 0.17% | -1.409 | 2.531 | 0.07% | 1.465op/s | 1 | 200 |
| trace_buffer/2_senders/1us_delay | execution_time | 51.023ms | 51.247ms ± 0.072ms | 51.229ms ± 0.046ms | 51.285ms | 51.396ms | 51.425ms | 51.462ms | 0.45% | 0.473 | 0.361 | 0.14% | 0.005ms | 1 | 200 |
| trace_buffer/2_senders/1us_delay | throughput | 34977.432op/s | 35124.360op/s ± 49.629op/s | 35136.203op/s ± 31.324op/s | 35154.790op/s | 35188.323op/s | 35228.234op/s | 35277.927op/s | 0.40% | -0.464 | 0.357 | 0.14% | 3.509op/s | 1 | 200 |
| trace_buffer/2_senders/no_delay | execution_time | 1.588ms | 1.717ms ± 0.042ms | 1.714ms ± 0.027ms | 1.739ms | 1.791ms | 1.819ms | 1.847ms | 7.72% | 0.337 | 0.077 | 2.46% | 0.003ms | 1 | 200 |
| trace_buffer/2_senders/no_delay | throughput | 974743.270op/s | 1048991.924op/s ± 25652.044op/s | 1050003.448op/s ± 16454.026op/s | 1068346.672op/s | 1088980.918op/s | 1092986.314op/s | 1133784.316op/s | 7.98% | -0.191 | 0.048 | 2.44% | 1813.873op/s | 1 | 200 |
| trace_buffer/4_senders/10us_delay | execution_time | 60.144ms | 60.208ms ± 0.056ms | 60.192ms ± 0.028ms | 60.234ms | 60.311ms | 60.362ms | 60.514ms | 0.53% | 1.730 | 4.385 | 0.09% | 0.004ms | 1 | 200 |
| trace_buffer/4_senders/10us_delay | throughput | 59490.528op/s | 59792.396op/s ± 55.634op/s | 59808.581op/s ± 27.621op/s | 59832.208op/s | 59848.131op/s | 59854.338op/s | 59856.250op/s | 0.08% | -1.720 | 4.323 | 0.09% | 3.934op/s | 1 | 200 |
| trace_buffer/4_senders/1us_delay | execution_time | 51.225ms | 51.447ms ± 0.129ms | 51.420ms ± 0.061ms | 51.493ms | 51.721ms | 51.811ms | 51.940ms | 1.01% | 1.280 | 1.554 | 0.25% | 0.009ms | 1 | 200 |
| trace_buffer/4_senders/1us_delay | throughput | 69310.346op/s | 69975.297op/s ± 175.286op/s | 70012.134op/s ± 82.890op/s | 70089.083op/s | 70177.224op/s | 70227.582op/s | 70277.665op/s | 0.38% | -1.266 | 1.508 | 0.25% | 12.395op/s | 1 | 200 |
| trace_buffer/4_senders/no_delay | execution_time | 3.626ms | 3.704ms ± 0.027ms | 3.705ms ± 0.015ms | 3.721ms | 3.745ms | 3.767ms | 3.774ms | 1.85% | -0.245 | 0.251 | 0.74% | 0.002ms | 1 | 200 |
| trace_buffer/4_senders/no_delay | throughput | 953929.801op/s | 972079.626op/s ± 7217.402op/s | 971540.424op/s ± 4033.008op/s | 975613.524op/s | 985148.742op/s | 990389.655op/s | 992835.752op/s | 2.19% | 0.294 | 0.277 | 0.74% | 510.347op/s | 1 | 200 |
| trace_buffer/8_senders/10us_delay | execution_time | 60.246ms | 60.328ms ± 0.068ms | 60.309ms ± 0.028ms | 60.348ms | 60.444ms | 60.567ms | 60.767ms | 0.76% | 2.572 | 10.512 | 0.11% | 0.005ms | 1 | 200 |
| trace_buffer/8_senders/10us_delay | throughput | 118485.329op/s | 119346.897op/s ± 133.537op/s | 119385.912op/s ± 56.258op/s | 119435.540op/s | 119466.262op/s | 119496.568op/s | 119509.166op/s | 0.10% | -2.552 | 10.349 | 0.11% | 9.442op/s | 1 | 200 |
| trace_buffer/8_senders/1us_delay | execution_time | 51.724ms | 52.025ms ± 0.175ms | 51.986ms ± 0.105ms | 52.129ms | 52.372ms | 52.449ms | 52.538ms | 1.06% | 0.720 | -0.045 | 0.34% | 0.012ms | 1 | 200 |
| trace_buffer/8_senders/1us_delay | throughput | 137043.006op/s | 138397.214op/s ± 465.358op/s | 138497.699op/s ± 280.925op/s | 138750.659op/s | 139047.272op/s | 139150.858op/s | 139199.357op/s | 0.51% | -0.706 | -0.070 | 0.34% | 32.906op/s | 1 | 200 |
| trace_buffer/8_senders/no_delay | execution_time | 7.040ms | 7.164ms ± 0.053ms | 7.160ms ± 0.035ms | 7.196ms | 7.254ms | 7.303ms | 7.346ms | 2.60% | 0.519 | 0.684 | 0.74% | 0.004ms | 1 | 200 |
| trace_buffer/8_senders/no_delay | throughput | 980062.489op/s | 1005071.645op/s ± 7442.163op/s | 1005529.411op/s ± 4953.431op/s | 1009897.548op/s | 1016596.045op/s | 1020481.923op/s | 1022743.302op/s | 1.71% | -0.466 | 0.596 | 0.74% | 526.240op/s | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| trace_buffer/1_senders/10us_delay | execution_time | [60.078ms; 60.087ms] or [-0.008%; +0.008%] | None | None | None |
| trace_buffer/1_senders/10us_delay | throughput | [14978.385op/s; 14980.650op/s] or [-0.008%; +0.008%] | None | None | None |
| trace_buffer/1_senders/1us_delay | execution_time | [50.708ms; 50.770ms] or [-0.061%; +0.061%] | None | None | None |
| trace_buffer/1_senders/1us_delay | throughput | [17727.458op/s; 17748.985op/s] or [-0.061%; +0.061%] | None | None | None |
| trace_buffer/1_senders/no_delay | execution_time | [356.182µs; 357.961µs] or [-0.249%; +0.249%] | None | None | None |
| trace_buffer/1_senders/no_delay | throughput | [2515559.194op/s; 2526911.906op/s] or [-0.225%; +0.225%] | None | None | None |
| trace_buffer/2_senders/10us_delay | execution_time | [60.122ms; 60.133ms] or [-0.010%; +0.010%] | None | None | None |
| trace_buffer/2_senders/10us_delay | throughput | [29933.488op/s; 29939.231op/s] or [-0.010%; +0.010%] | None | None | None |
| trace_buffer/2_senders/1us_delay | execution_time | [51.237ms; 51.257ms] or [-0.020%; +0.020%] | None | None | None |
| trace_buffer/2_senders/1us_delay | throughput | [35117.482op/s; 35131.238op/s] or [-0.020%; +0.020%] | None | None | None |
| trace_buffer/2_senders/no_delay | execution_time | [1.711ms; 1.723ms] or [-0.341%; +0.341%] | None | None | None |
| trace_buffer/2_senders/no_delay | throughput | [1045436.798op/s; 1052547.051op/s] or [-0.339%; +0.339%] | None | None | None |
| trace_buffer/4_senders/10us_delay | execution_time | [60.201ms; 60.216ms] or [-0.013%; +0.013%] | None | None | None |
| trace_buffer/4_senders/10us_delay | throughput | [59784.685op/s; 59800.106op/s] or [-0.013%; +0.013%] | None | None | None |
| trace_buffer/4_senders/1us_delay | execution_time | [51.429ms; 51.465ms] or [-0.035%; +0.035%] | None | None | None |
| trace_buffer/4_senders/1us_delay | throughput | [69951.004op/s; 69999.590op/s] or [-0.035%; +0.035%] | None | None | None |
| trace_buffer/4_senders/no_delay | execution_time | [3.700ms; 3.707ms] or [-0.103%; +0.103%] | None | None | None |
| trace_buffer/4_senders/no_delay | throughput | [971079.363op/s; 973079.888op/s] or [-0.103%; +0.103%] | None | None | None |
| trace_buffer/8_senders/10us_delay | execution_time | [60.319ms; 60.338ms] or [-0.016%; +0.016%] | None | None | None |
| trace_buffer/8_senders/10us_delay | throughput | [119328.390op/s; 119365.404op/s] or [-0.016%; +0.016%] | None | None | None |
| trace_buffer/8_senders/1us_delay | execution_time | [52.000ms; 52.049ms] or [-0.047%; +0.047%] | None | None | None |
| trace_buffer/8_senders/1us_delay | throughput | [138332.720op/s; 138461.708op/s] or [-0.047%; +0.047%] | None | None | None |
| trace_buffer/8_senders/no_delay | execution_time | [7.157ms; 7.171ms] or [-0.103%; +0.103%] | None | None | None |
| trace_buffer/8_senders/no_delay | throughput | [1004040.233op/s; 1006103.057op/s] or [-0.103%; +0.103%] | None | None | None |
Group 1
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| 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 | 2.058µs | 2.078µs ± 0.011µs | 2.074µs ± 0.005µs | 2.085µs | 2.099µs | 2.102µs | 2.104µs | 1.43% | 0.820 | -0.456 | 0.52% | 0.001µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| write only interface | execution_time | [2.076µs; 2.079µs] or [-0.072%; +0.072%] | None | None | None |
Group 2
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| 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 | 29.433µs | 30.123µs ± 0.883µs | 29.632µs ± 0.120µs | 31.079µs | 32.074µs | 32.385µs | 33.299µs | 12.38% | 1.253 | 0.344 | 2.92% | 0.062µ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 | [30.001µs; 30.245µs] or [-0.406%; +0.406%] | None | None | None |
Group 3
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| 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 | 293.323µs | 294.206µs ± 0.453µs | 294.158µs ± 0.182µs | 294.323µs | 294.874µs | 295.647µs | 297.528µs | 1.15% | 3.069 | 16.802 | 0.15% | 0.032µ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 | [294.144µs; 294.269µs] or [-0.021%; +0.021%] | None | None | None |
Group 4
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| 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.610µs | 2.643µs ± 0.023µs | 2.639µs ± 0.011µs | 2.649µs | 2.681µs | 2.724µs | 2.749µs | 4.16% | 1.879 | 4.592 | 0.89% | 0.002µs | 1 | 200 |
| tags/replace_trace_tags_v04 | execution_time | 2.596µs | 2.780µs ± 0.064µs | 2.802µs ± 0.015µs | 2.818µs | 2.844µs | 2.851µs | 2.859µs | 2.03% | -1.467 | 1.027 | 2.31% | 0.005µ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.639µs; 2.646µs] or [-0.123%; +0.123%] | None | None | None |
| tags/replace_trace_tags_v04 | execution_time | [2.771µs; 2.789µs] or [-0.321%; +0.321%] | None | None | None |
Group 5
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| 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 | 20.850µs | 21.458µs ± 0.414µs | 21.371µs ± 0.154µs | 21.507µs | 22.310µs | 23.068µs | 23.336µs | 9.20% | 2.024 | 4.943 | 1.92% | 0.029µs | 1 | 200 |
| scenario | metric | 95% CI mean | Shapiro-Wilk pvalue | Ljung-Box pvalue (lag=1) | Dip test pvalue |
|---|---|---|---|---|---|
| two way interface | execution_time | [21.400µs; 21.515µs] or [-0.267%; +0.267%] | None | None | None |
Group 6
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| 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.933µs | 5.029µs ± 0.042µs | 5.027µs ± 0.030µs | 5.050µs | 5.103µs | 5.108µs | 5.132µs | 2.09% | 0.183 | -0.488 | 0.83% | 0.003µ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.023µs; 5.035µs] or [-0.116%; +0.116%] | None | None | None |
Group 7
| cpu_model | git_commit_sha | git_commit_date | git_branch |
|---|---|---|---|
| Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz | 36c57ed | 1788288568 | andrew.glaude/noCrash |
| 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.899µs | 3.923µs ± 0.004µs | 3.922µs ± 0.003µs | 3.926µs | 3.929µs | 3.931µs | 3.933µs | 0.29% | -0.501 | 4.481 | 0.10% | 0.000µs | 1 | 200 |
| credit_card/is_card_number/ | throughput | 254233384.652op/s | 254925045.265op/s ± 262645.890op/s | 254964152.043op/s ± 174748.204op/s | 255112849.179op/s | 255234853.074op/s | 255307757.931op/s | 256457241.337op/s | 0.59% | 0.520 | 4.592 | 0.10% | 18571.869op/s | 1 | 200 |
| credit_card/is_card_number/ 3782-8224-6310-005 | execution_time | 79.973µs | 80.546µs ± 0.123µs | 80.537µs ± 0.068µs | 80.618µs | 80.727µs | 80.794µs | 81.057µs | 0.65% | -0.482 | 3.845 | 0.15% | 0.009µs | 1 | 200 |
| credit_card/is_card_number/ 3782-8224-6310-005 | throughput | 12336932.888op/s | 12415230.207op/s ± 18939.916op/s | 12416585.997op/s ± 10531.445op/s | 12425723.684op/s | 12446969.197op/s | 12467918.697op/s | 12504245.191op/s | 0.71% | 0.508 | 3.885 | 0.15% | 1339.254op/s | 1 | 200 |
| credit_card/is_card_number/ 378282246310005 | execution_time | 68.318µs | 68.423µs ± 0.092µs | 68.401µs ± 0.049µs | 68.462µs | 68.544µs | 68.681µs | 69.234µs | 1.22% | 3.882 | 29.149 | 0.13% | 0.006µs | 1 | 200 |
| credit_card/is_card_number/ 378282246310005 | throughput | 14443855.554op/s | 14614930.004op/s ± 19502.511op/s | 14619638.770op/s ± 10485.562op/s | 14628305.942op/s | 14633422.537op/s | 14636764.144op/s | 14637503.714op/s | 0.12% | -3.818 | 28.380 | 0.13% | 1379.036op/s | 1 | 200 |
| credit_card/is_card_number/37828224631 | execution_time | 3.884µs | 3.922µs ± 0.005µs | 3.921µs ± 0.003µs | 3.925µs | 3.930µs | 3.932µs | 3.935µs | 0.36% | -1.637 | 14.058 | 0.13% | 0.000µs | 1 | 200 |
| credit_card/is_card_number/37828224631 | throughput | 254126161.780op/s | 254960637.226op/s ± 333142.196op/s | 255036699.867op/s ± 200750.489op/s | 255189407.960op/s | 255308248.968op/s | 255342927.083op/s | 257468583.027op/s | 0.95% | 1.690 | 14.516 | 0.13% | 23556.711op/s | 1 | 200 |
| credit_card/is_card_number/378282246310005 | execution_time | 64.936µs | 65.043µs ± 0.067µs | 65.030µs ± 0.048µs | 65.085µs | 65.170µs | 65.223µs | 65.271µs | 0.37% | 0.756 | 0.201 | 0.10% | 0.005µs | 1 | 200 |
| credit_card/is_card_number/378282246310005 | throughput | 15320753.403op/s | 15374537.693op/s ± 15899.605op/s | 15377488.894op/s ± 11325.073op/s | 15387597.597op/s | 15394247.401op/s | 15398497.846op/s | 15399719.725op/s | 0.14% | -0.751 | 0.187 | 0.10% | 1124.272op/s | 1 | 200 |
| credit_card/is_card_number/37828224631000521389798 | execution_time | 45.568µs | 45.764µs ± 0.088µs | 45.764µs ± 0.060µs | 45.825µs | 45.913µs | 45.958µs | 46.032µs | 0.59% | 0.156 | -0.329 | 0.19% | 0.006µs | 1 | 200 |
| credit_card/is_card_number/37828224631000521389798 | throughput | 21723796.117op/s | 21851269.307op/s ± 42012.497op/s | 21851213.888op/s ± 28688.329op/s | 21878876.504op/s | 21918772.772op/s | 21934369.974op/s | 21945237.913op/s | 0.43% | -0.147 | -0.336 | 0.19% | 2970.732op/s | 1 | 200 |
| credit_card/is_card_number/x371413321323331 | execution_time | 6.843µs | 6.853µs ± 0.007µs | 6.852µs ± 0.005µs | 6.857µs | 6.864µs | 6.875µs | 6.883µs | 0.46% | 1.168 | 1.966 | 0.10% | 0.001µs | 1 | 200 |
| credit_card/is_card_number/x371413321323331 | throughput | 145278228.704op/s | 145925851.604op/s ± 151810.528op/s | 145951923.452op/s ± 101682.479op/s | 146048268.953op/s | 146103131.279op/s | 146127749.994op/s | 146133580.706op/s | 0.12% | -1.160 | 1.929 | 0.10% | 10734.625op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/ | execution_time | 3.899µs | 3.923µs ± 0.005µs | 3.921µs ± 0.003µs | 3.926µs | 3.930µs | 3.933µs | 3.934µs | 0.33% | -0.252 | 2.590 | 0.12% | 0.000µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/ | throughput | 254175396.779op/s | 254927270.958op/s ± 294677.364op/s | 255021862.199op/s ± 187837.763op/s | 255154152.673op/s | 255243698.405op/s | 255343632.361op/s | 256492097.749op/s | 0.58% | 0.268 | 2.669 | 0.12% | 20836.836op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 | execution_time | 65.579µs | 65.828µs ± 0.075µs | 65.813µs ± 0.046µs | 65.879µs | 65.956µs | 66.039µs | 66.089µs | 0.42% | 0.282 | 1.279 | 0.11% | 0.005µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 | throughput | 15131094.509op/s | 15191228.327op/s ± 17283.003op/s | 15194646.928op/s ± 10683.310op/s | 15202581.778op/s | 15213471.529op/s | 15243442.595op/s | 15248897.113op/s | 0.36% | -0.271 | 1.280 | 0.11% | 1222.093op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/ 378282246310005 | execution_time | 53.472µs | 53.576µs ± 0.060µs | 53.562µs ± 0.037µs | 53.613µs | 53.680µs | 53.777µs | 53.799µs | 0.44% | 1.008 | 1.088 | 0.11% | 0.004µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/ 378282246310005 | throughput | 18587696.853op/s | 18664992.687op/s ± 21027.007op/s | 18670019.683op/s ± 12877.442op/s | 18680073.032op/s | 18691681.828op/s | 18696670.871op/s | 18701245.503op/s | 0.17% | -1.001 | 1.064 | 0.11% | 1486.834op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/37828224631 | execution_time | 3.888µs | 3.923µs ± 0.005µs | 3.922µs ± 0.003µs | 3.926µs | 3.931µs | 3.935µs | 3.938µs | 0.39% | -1.485 | 13.798 | 0.12% | 0.000µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/37828224631 | throughput | 253958592.002op/s | 254880851.672op/s ± 315945.928op/s | 254945314.233op/s ± 183653.475op/s | 255071368.970op/s | 255249304.551op/s | 255275190.997op/s | 257231067.945op/s | 0.90% | 1.536 | 14.207 | 0.12% | 22340.751op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/378282246310005 | execution_time | 50.243µs | 50.344µs ± 0.061µs | 50.335µs ± 0.042µs | 50.379µs | 50.450µs | 50.538µs | 50.578µs | 0.48% | 1.010 | 1.260 | 0.12% | 0.004µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/378282246310005 | throughput | 19771613.031op/s | 19863217.742op/s ± 23880.788op/s | 19866783.731op/s ± 16478.580op/s | 19882260.054op/s | 19892042.686op/s | 19897895.561op/s | 19903090.950op/s | 0.18% | -1.002 | 1.230 | 0.12% | 1688.627op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/37828224631000521389798 | execution_time | 45.465µs | 45.795µs ± 0.130µs | 45.821µs ± 0.079µs | 45.887µs | 45.963µs | 46.043µs | 46.106µs | 0.62% | -0.545 | -0.214 | 0.28% | 0.009µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/37828224631000521389798 | throughput | 21689155.383op/s | 21836792.267op/s ± 61937.040op/s | 21823990.327op/s ± 37689.760op/s | 21884522.187op/s | 21959981.625op/s | 21993122.157op/s | 21995003.017op/s | 0.78% | 0.557 | -0.203 | 0.28% | 4379.610op/s | 1 | 200 |
| credit_card/is_card_number_no_luhn/x371413321323331 | execution_time | 6.842µs | 6.853µs ± 0.007µs | 6.852µs ± 0.005µs | 6.857µs | 6.865µs | 6.872µs | 6.876µs | 0.36% | 0.804 | 0.437 | 0.10% | 0.000µs | 1 | 200 |
| credit_card/is_card_number_no_luhn/x371413321323331 | throughput | 145432754.086op/s | 145931005.631op/s ± 144025.090op/s | 145950588.505op/s ± 108675.041op/s | 146057152.165op/s | 146102096.876op/s | 146150762.111op/s | 146153958.580op/s | 0.14% | -0.799 | 0.421 | 0.10% | 10184.112op/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.922µs; 3.923µs] or [-0.014%; +0.014%] | None | None | None |
| credit_card/is_card_number/ | throughput | [254888645.071op/s; 254961445.459op/s] or [-0.014%; +0.014%] | None | None | None |
| credit_card/is_card_number/ 3782-8224-6310-005 | execution_time | [80.529µs; 80.563µs] or [-0.021%; +0.021%] | None | None | None |
| credit_card/is_card_number/ 3782-8224-6310-005 | throughput | [12412605.317op/s; 12417855.097op/s] or [-0.021%; +0.021%] | None | None | None |
| credit_card/is_card_number/ 378282246310005 | execution_time | [68.411µs; 68.436µs] or [-0.019%; +0.019%] | None | None | None |
| credit_card/is_card_number/ 378282246310005 | throughput | [14612227.143op/s; 14617632.864op/s] or [-0.018%; +0.018%] | None | None | None |
| credit_card/is_card_number/37828224631 | execution_time | [3.921µs; 3.923µs] or [-0.018%; +0.018%] | None | None | None |
| credit_card/is_card_number/37828224631 | throughput | [254914466.921op/s; 255006807.530op/s] or [-0.018%; +0.018%] | None | None | None |
| credit_card/is_card_number/378282246310005 | execution_time | [65.033µs; 65.052µs] or [-0.014%; +0.014%] | None | None | None |
| credit_card/is_card_number/378282246310005 | throughput | [15372334.161op/s; 15376741.226op/s] or [-0.014%; +0.014%] | None | None | None |
| credit_card/is_card_number/37828224631000521389798 | execution_time | [45.752µs; 45.776µs] or [-0.027%; +0.027%] | None | None | None |
| credit_card/is_card_number/37828224631000521389798 | throughput | [21845446.779op/s; 21857091.835op/s] or [-0.027%; +0.027%] | None | None | None |
| credit_card/is_card_number/x371413321323331 | execution_time | [6.852µs; 6.854µs] or [-0.014%; +0.014%] | None | None | None |
| credit_card/is_card_number/x371413321323331 | throughput | [145904812.125op/s; 145946891.083op/s] or [-0.014%; +0.014%] | None | None | None |
| credit_card/is_card_number_no_luhn/ | execution_time | [3.922µs; 3.923µs] or [-0.016%; +0.016%] | None | None | None |
| credit_card/is_card_number_no_luhn/ | throughput | [254886431.509op/s; 254968110.407op/s] or [-0.016%; +0.016%] | None | None | None |
| credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 | execution_time | [65.817µs; 65.838µs] or [-0.016%; +0.016%] | None | None | None |
| credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 | throughput | [15188833.069op/s; 15193623.585op/s] or [-0.016%; +0.016%] | None | None | None |
| credit_card/is_card_number_no_luhn/ 378282246310005 | execution_time | [53.568µs; 53.585µs] or [-0.016%; +0.016%] | None | None | None |
| credit_card/is_card_number_no_luhn/ 378282246310005 | throughput | [18662078.546op/s; 18667906.828op/s] or [-0.016%; +0.016%] | None | None | None |
| credit_card/is_card_number_no_luhn/37828224631 | execution_time | [3.923µs; 3.924µs] or [-0.017%; +0.017%] | None | None | None |
| credit_card/is_card_number_no_luhn/37828224631 | throughput | [254837064.605op/s; 254924638.739op/s] or [-0.017%; +0.017%] | None | None | None |
| credit_card/is_card_number_no_luhn/378282246310005 | execution_time | [50.336µs; 50.353µs] or [-0.017%; +0.017%] | None | None | None |
| credit_card/is_card_number_no_luhn/378282246310005 | throughput | [19859908.095op/s; 19866527.390op/s] or [-0.017%; +0.017%] | None | None | None |
| credit_card/is_card_number_no_luhn/37828224631000521389798 | execution_time | [45.777µs; 45.813µs] or [-0.039%; +0.039%] | None | None | None |
| credit_card/is_card_number_no_luhn/37828224631000521389798 | throughput | [21828208.389op/s; 21845376.145op/s] or [-0.039%; +0.039%] | None | None | None |
| credit_card/is_card_number_no_luhn/x371413321323331 | execution_time | [6.852µs; 6.853µs] or [-0.014%; +0.014%] | None | None | None |
| credit_card/is_card_number_no_luhn/x371413321323331 | throughput | [145911045.138op/s; 145950966.123op/s] or [-0.014%; +0.014%] | None | None | None |
Baseline
Omitted due to size.
Artifact Size Benchmark Reportaarch64-alpine-linux-musl
aarch64-unknown-linux-gnu
libdatadog-x64-windows
libdatadog-x86-windows
x86_64-alpine-linux-musl
x86_64-unknown-linux-gnu
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 65654c4060
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| let close_tag = &self.s[inner_end..outer_end]; | ||
| let obfuscated_inner = | ||
| obfuscate_sql(inner, self.config, self.dbms); | ||
| if self.depth + 1 >= MAX_DOLLAR_QUOTE_DEPTH { |
There was a problem hiding this comment.
Very nit, but since the constant is arbitrary to begin with, the + 1 looks a bit superfluous. We could decrement MAX_DOLLAR_QUOTE_DEPTH if needed.
| if self.depth + 1 >= MAX_DOLLAR_QUOTE_DEPTH { | |
| if self.depth >= MAX_DOLLAR_QUOTE_DEPTH { |
There was a problem hiding this comment.
I think we actually need this since otherwise we create a gap where we're off by 1 (if you try removing this you can see this happens with failing the test even if you lower the constant by 1).
…view nits Bound strip_userinfo_best_effort's authority scan to path_end instead of path_query_end in the control-char fallback, matching the parse-error fallback, so an '@' inside the query is never mistaken for userinfo. Also renames the tokenizer's dollar-quote recursion depth field for clarity. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Summary
Test plan
cargo nextest run -p libdd-trace-obfuscation(343 tests, incl. new regression tests for both fixes)cargo fmt --check/cargo clippy -D warningsclean🤖 Generated with Claude Code