Skip to content

feat(profiling)!: take sample types by enum#1450

Open
danielsn wants to merge 8 commits intomainfrom
dsn/sample-type-enum
Open

feat(profiling)!: take sample types by enum#1450
danielsn wants to merge 8 commits intomainfrom
dsn/sample-type-enum

Conversation

@danielsn
Copy link
Contributor

What does this PR do?

Takes sample types by enum rather than as tuples of strings.

Motivation

  • A way to avoid random inconsistencies between names, units, redundancy, etc
  • First step towards an OTEL style API

Additional Notes

Added experimental enum variants to allow users to experiment without needing to update libdatadog.

How to test the change?

Describe here in detail how the change can be validated.

@pr-commenter
Copy link

pr-commenter bot commented Jan 14, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-02-06 20:07:52

Comparing candidate commit e132864 in PR branch dsn/sample-type-enum with baseline commit 00c1cd7 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 e132864 1770407444 dsn/sample-type-enum
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.898µs 3.913µs ± 0.003µs 3.912µs ± 0.002µs 3.914µs 3.919µs 3.921µs 3.923µs 0.27% 0.348 2.662 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 254939070.460op/s 255584051.277op/s ± 204450.991op/s 255616551.172op/s ± 104298.480op/s 255707729.667op/s 255836691.158op/s 255885702.016op/s 256559378.139op/s 0.37% -0.337 2.689 0.08% 14456.868op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 77.062µs 77.705µs ± 0.548µs 77.595µs ± 0.271µs 77.908µs 78.745µs 79.513µs 80.139µs 3.28% 1.626 3.206 0.70% 0.039µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12478245.292op/s 12869868.219op/s ± 89672.992op/s 12887483.132op/s ± 45096.043op/s 12923661.612op/s 12968301.450op/s 12976327.863op/s 12976552.577op/s 0.69% -1.573 2.971 0.70% 6340.838op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 70.623µs 71.016µs ± 0.421µs 70.811µs ± 0.124µs 71.208µs 71.900µs 72.362µs 72.966µs 3.04% 1.764 3.217 0.59% 0.030µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13705066.578op/s 14081734.508op/s ± 82668.322op/s 14122113.832op/s ± 24754.218op/s 14140312.972op/s 14148734.183op/s 14153202.631op/s 14159683.064op/s 0.27% -1.727 3.022 0.59% 5845.533op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.891µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.913µs 3.916µs 3.920µs 3.924µs 0.32% -0.930 13.765 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254831453.818op/s 255642292.483op/s ± 188353.824op/s 255650235.284op/s ± 97676.521op/s 255742128.690op/s 255876410.498op/s 255936700.873op/s 256985873.418op/s 0.52% 0.963 13.950 0.07% 13318.627op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 67.414µs 67.689µs ± 0.353µs 67.521µs ± 0.052µs 67.770µs 68.406µs 68.977µs 69.407µs 2.79% 2.206 5.046 0.52% 0.025µs 1 200
credit_card/is_card_number/378282246310005 throughput 14407807.942op/s 14773823.468op/s ± 76098.376op/s 14810284.313op/s ± 11392.390op/s 14818924.878op/s 14825960.414op/s 14831490.577op/s 14833660.543op/s 0.16% -2.173 4.842 0.51% 5380.968op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 44.653µs 45.189µs ± 0.155µs 45.189µs ± 0.109µs 45.301µs 45.435µs 45.500µs 45.528µs 0.75% -0.305 0.137 0.34% 0.011µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21964501.013op/s 22129442.946op/s ± 76230.666op/s 22129363.108op/s ± 53405.352op/s 22175636.763op/s 22249901.876op/s 22324447.980op/s 22395067.759op/s 1.20% 0.326 0.172 0.34% 5390.322op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.028µs 6.038µs ± 0.004µs 6.038µs ± 0.003µs 6.040µs 6.044µs 6.046µs 6.048µs 0.16% -0.142 -0.331 0.06% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 165347000.688op/s 165626463.801op/s ± 105946.867op/s 165617630.072op/s ± 73364.622op/s 165705501.426op/s 165796185.032op/s 165871725.175op/s 165904211.494op/s 0.17% 0.145 -0.331 0.06% 7491.575op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.894µs 3.914µs ± 0.003µs 3.914µs ± 0.002µs 3.915µs 3.917µs 3.919µs 3.920µs 0.15% -1.737 10.856 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255094021.009op/s 255512852.518op/s ± 180413.988op/s 255484584.840op/s ± 106705.493op/s 255637342.229op/s 255783811.379op/s 255824435.657op/s 256788700.574op/s 0.51% 1.758 11.031 0.07% 12757.195op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.157µs 65.767µs ± 0.086µs 65.774µs ± 0.051µs 65.825µs 65.880µs 65.917µs 65.935µs 0.25% -1.946 11.545 0.13% 0.006µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15166420.029op/s 15205126.433op/s ± 19863.519op/s 15203598.692op/s ± 11780.246op/s 15215505.745op/s 15233591.556op/s 15249231.184op/s 15347621.093op/s 0.95% 1.985 11.882 0.13% 1404.563op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 52.949µs 53.014µs ± 0.034µs 53.010µs ± 0.018µs 53.029µs 53.077µs 53.106µs 53.192µs 0.34% 1.643 5.825 0.06% 0.002µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18799987.825op/s 18863042.808op/s ± 11970.290op/s 18864513.021op/s ± 6499.446op/s 18870639.173op/s 18878231.420op/s 18883680.101op/s 18886113.041op/s 0.11% -1.634 5.769 0.06% 846.427op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.890µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.913µs 3.916µs 3.919µs 3.927µs 0.39% -1.051 17.842 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254646831.445op/s 255627426.305op/s ± 189299.947op/s 255638192.346op/s ± 83543.987op/s 255715992.774op/s 255835684.792op/s 255920057.467op/s 257047382.401op/s 0.55% 1.093 18.061 0.07% 13385.528op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 49.739µs 49.806µs ± 0.029µs 49.805µs ± 0.019µs 49.826µs 49.861µs 49.871µs 49.906µs 0.20% 0.311 0.020 0.06% 0.002µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 20037548.971op/s 20077776.666op/s ± 11826.641op/s 20078201.098op/s ± 7844.122op/s 20086019.126op/s 20094640.761op/s 20103111.320op/s 20104891.520op/s 0.13% -0.307 0.016 0.06% 836.270op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 44.634µs 45.098µs ± 0.133µs 45.097µs ± 0.094µs 45.195µs 45.304µs 45.358µs 45.436µs 0.75% -0.248 0.139 0.29% 0.009µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 22008759.288op/s 22173941.789op/s ± 65317.527op/s 22174460.566op/s ± 45986.433op/s 22213403.569op/s 22276985.843op/s 22330344.687op/s 22404289.029op/s 1.04% 0.267 0.167 0.29% 4618.647op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.027µs 6.036µs ± 0.008µs 6.035µs ± 0.002µs 6.037µs 6.040µs 6.048µs 6.104µs 1.15% 7.261 62.711 0.12% 0.001µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 163822722.657op/s 165684863.241op/s ± 205409.832op/s 165708732.850op/s ± 61246.947op/s 165763719.575op/s 165832041.276op/s 165907339.548op/s 165918714.049op/s 0.13% -7.216 62.182 0.12% 14524.669op/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.011%; +0.011%] None None None
credit_card/is_card_number/ throughput [255555716.336op/s; 255612386.218op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [77.629µs; 77.781µs] or [-0.098%; +0.098%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12857440.405op/s; 12882296.034op/s] or [-0.097%; +0.097%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [70.958µs; 71.075µs] or [-0.082%; +0.082%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14070277.473op/s; 14093191.542op/s] or [-0.081%; +0.081%] None None None
credit_card/is_card_number/37828224631 execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255616188.454op/s; 255668396.511op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [67.640µs; 67.738µs] or [-0.072%; +0.072%] None None None
credit_card/is_card_number/378282246310005 throughput [14763276.965op/s; 14784369.971op/s] or [-0.071%; +0.071%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.168µs; 45.211µs] or [-0.048%; +0.048%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [22118878.109op/s; 22140007.783op/s] or [-0.048%; +0.048%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.037µs; 6.038µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 throughput [165611780.584op/s; 165641147.018op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.913µs; 3.914µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [255487848.875op/s; 255537856.162op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.756µs; 65.779µs] or [-0.018%; +0.018%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15202373.541op/s; 15207879.326op/s] or [-0.018%; +0.018%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.009µs; 53.018µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18861383.841op/s; 18864701.775op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.912µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255601191.153op/s; 255653661.457op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [49.802µs; 49.810µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [20076137.607op/s; 20079415.724op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.080µs; 45.117µs] or [-0.041%; +0.041%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [22164889.408op/s; 22182994.170op/s] or [-0.041%; +0.041%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.035µs; 6.037µs] or [-0.017%; +0.017%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [165656395.414op/s; 165713331.068op/s] 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 e132864 1770407444 dsn/sample-type-enum
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 205.810µs 206.603µs ± 0.347µs 206.571µs ± 0.228µs 206.814µs 207.186µs 207.549µs 207.883µs 0.64% 0.555 0.355 0.17% 0.025µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 4810396.280op/s 4840214.411op/s ± 8114.202op/s 4840958.803op/s ± 5326.203op/s 4845936.227op/s 4851777.032op/s 4853839.202op/s 4858857.415op/s 0.37% -0.545 0.332 0.17% 573.761op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 18.573µs 18.731µs ± 0.103µs 18.709µs ± 0.067µs 18.788µs 18.935µs 19.013µs 19.091µs 2.04% 0.926 0.469 0.55% 0.007µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 52381098.236op/s 53389431.227op/s ± 293493.479op/s 53450453.242op/s ± 190578.332op/s 53619363.936op/s 53746607.899op/s 53812296.092op/s 53842163.068op/s 0.73% -0.899 0.400 0.55% 20753.123op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.812µs 10.883µs ± 0.031µs 10.882µs ± 0.022µs 10.904µs 10.939µs 10.958µs 10.965µs 0.77% 0.249 -0.325 0.28% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 91197683.161op/s 91884252.674op/s ± 258804.537op/s 91898224.526op/s ± 189921.127op/s 92087261.470op/s 92257464.815op/s 92442756.041op/s 92487997.741op/s 0.64% -0.236 -0.334 0.28% 18300.244op/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 [206.555µs; 206.651µs] or [-0.023%; +0.023%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [4839089.860op/s; 4841338.961op/s] or [-0.023%; +0.023%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [18.717µs; 18.745µs] or [-0.077%; +0.077%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [53348755.853op/s; 53430106.600op/s] or [-0.076%; +0.076%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.879µs; 10.888µs] or [-0.039%; +0.039%] None None None
normalization/normalize_name/normalize_name/good throughput [91848384.854op/s; 91920120.493op/s] or [-0.039%; +0.039%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.020ms 14.080ms ± 0.030ms 14.076ms ± 0.014ms 14.093ms 14.117ms 14.183ms 14.253ms 1.26% 2.220 9.259 0.21% 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.076ms; 14.084ms] or [-0.029%; +0.029%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.406µs 85.675µs ± 0.285µs 85.642µs ± 0.061µs 85.709µs 85.849µs 86.031µs 89.410µs 4.40% 11.331 145.698 0.33% 0.020µ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.635µs; 85.714µs] or [-0.046%; +0.046%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.629ms 10.658ms ± 0.014ms 10.657ms ± 0.009ms 10.667ms 10.681ms 10.702ms 10.716ms 0.55% 0.773 1.515 0.13% 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.656ms; 10.660ms] or [-0.018%; +0.018%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.514ns 191.336ns ± 3.050ns 190.698ns ± 1.524ns 192.343ns 195.628ns 202.136ns 215.585ns 13.05% 3.527 20.931 1.59% 0.216ns 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.913ns; 191.759ns] or [-0.221%; +0.221%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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 535.110µs 536.839µs ± 1.390µs 536.492µs ± 0.621µs 537.423µs 538.974µs 541.156µs 547.988µs 2.14% 3.265 20.073 0.26% 0.098µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1824858.850op/s 1862767.449op/s ± 4784.978op/s 1863960.591op/s ± 2159.114op/s 1865750.422op/s 1867374.699op/s 1868098.222op/s 1868775.672op/s 0.26% -3.178 19.125 0.26% 338.349op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 380.098µs 381.511µs ± 0.740µs 381.486µs ± 0.679µs 382.171µs 382.560µs 382.754µs 383.060µs 0.41% 0.032 -1.475 0.19% 0.052µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2610554.722op/s 2621168.309op/s ± 5083.424op/s 2621327.334op/s ± 4668.622op/s 2625924.122op/s 2627961.922op/s 2629102.246op/s 2630897.142op/s 0.37% -0.029 -1.476 0.19% 359.452op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 189.417µs 190.316µs ± 0.279µs 190.332µs ± 0.154µs 190.470µs 190.727µs 191.083µs 191.574µs 0.65% 0.240 1.963 0.15% 0.020µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5219921.308op/s 5254421.341op/s ± 7687.706op/s 5253982.569op/s ± 4240.913op/s 5259180.507op/s 5267164.566op/s 5270799.808op/s 5279361.473op/s 0.48% -0.223 1.924 0.15% 543.603op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.479µs 36.593µs ± 0.057µs 36.589µs ± 0.038µs 36.630µs 36.678µs 36.718µs 36.914µs 0.89% 0.917 3.854 0.16% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 27090186.312op/s 27327485.461op/s ± 42513.028op/s 27330323.288op/s ± 28052.842op/s 27356827.553op/s 27395219.623op/s 27407005.402op/s 27412681.172op/s 0.30% -0.894 3.722 0.16% 3006.125op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 45.914µs 46.049µs ± 0.061µs 46.040µs ± 0.038µs 46.083µs 46.155µs 46.213µs 46.241µs 0.43% 0.590 0.177 0.13% 0.004µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21626048.806op/s 21716027.159op/s ± 28563.615op/s 21720032.483op/s ± 17884.535op/s 21735420.744op/s 21756349.859op/s 21765049.872op/s 21779980.491op/s 0.28% -0.583 0.165 0.13% 2019.753op/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 [536.647µs; 537.032µs] or [-0.036%; +0.036%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1862104.297op/s; 1863430.601op/s] or [-0.036%; +0.036%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [381.408µs; 381.613µs] or [-0.027%; +0.027%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2620463.795op/s; 2621872.822op/s] or [-0.027%; +0.027%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [190.278µs; 190.355µs] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5253355.899op/s; 5255486.783op/s] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.585µs; 36.601µs] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27321593.564op/s; 27333377.358op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.041µs; 46.057µs] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21712068.517op/s; 21719985.801op/s] or [-0.018%; +0.018%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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 530.547µs 531.370µs ± 0.417µs 531.340µs ± 0.251µs 531.609µs 532.038µs 532.180µs 533.990µs 0.50% 1.299 6.472 0.08% 0.030µ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 [531.312µs; 531.428µs] or [-0.011%; +0.011%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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 240.819ns 254.139ns ± 15.235ns 246.103ns ± 3.847ns 259.644ns 288.127ns 300.539ns 302.729ns 23.01% 1.540 1.559 5.98% 1.077ns 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 [252.028ns; 256.251ns] or [-0.831%; +0.831%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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 9.475ms 9.785ms ± 0.079ms 9.786ms ± 0.030ms 9.816ms 9.874ms 9.973ms 10.359ms 5.86% 1.199 16.594 0.81% 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 [9.774ms; 9.796ms] or [-0.112%; +0.112%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.202µs 3.243µs ± 1.432µs 3.005µs ± 0.037µs 3.052µs 3.689µs 14.119µs 14.725µs 389.96% 7.215 53.714 44.04% 0.101µ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.044µs; 3.441µs] or [-6.119%; +6.119%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.983µs 5.055µs ± 0.049µs 5.060µs ± 0.045µs 5.102µs 5.132µs 5.139µs 5.146µs 1.70% 0.157 -1.329 0.96% 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.048µs; 5.062µs] or [-0.134%; +0.134%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.434µs 2.460µs ± 0.021µs 2.456µs ± 0.011µs 2.466µs 2.517µs 2.524µs 2.528µs 2.92% 1.518 2.135 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.457µs; 2.463µs] or [-0.119%; +0.119%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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 3.978ms 3.983ms ± 0.007ms 3.982ms ± 0.001ms 3.984ms 3.986ms 3.988ms 4.071ms 2.24% 11.530 148.451 0.17% 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 [3.982ms; 3.984ms] or [-0.023%; +0.023%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.397ms 47.741ms ± 0.794ms 47.627ms ± 0.066ms 47.694ms 47.851ms 50.223ms 56.857ms 19.38% 9.033 92.100 1.66% 0.056ms 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.631ms; 47.851ms] or [-0.230%; +0.230%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.136µs 145.804µs ± 1.746µs 145.482µs ± 0.515µs 146.047µs 147.783µs 153.424µs 161.883µs 11.27% 5.715 43.561 1.19% 0.123µ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 [145.562µs; 146.046µs] or [-0.166%; +0.166%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.701µs 161.138µs ± 0.662µs 161.068µs ± 0.123µs 161.194µs 161.446µs 162.309µs 169.821µs 5.43% 11.444 146.545 0.41% 0.047µ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.046µs; 161.230µs] or [-0.057%; +0.057%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.089µs 23.511µs ± 9.336µs 18.308µs ± 0.135µs 27.987µs 44.634µs 45.470µs 65.204µs 256.14% 1.599 1.698 39.61% 0.660µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [22.217µs; 24.805µs] or [-5.503%; +5.503%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz e132864 1770407444 dsn/sample-type-enum
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.950µs 34.577µs ± 1.103µs 34.067µs ± 0.042µs 34.170µs 36.941µs 37.045µs 37.754µs 10.82% 1.706 0.971 3.18% 0.078µ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.425µs; 34.730µs] or [-0.442%; +0.442%] None None None

Baseline

Omitted due to size.

@codecov-commenter
Copy link

codecov-commenter commented Jan 14, 2026

Codecov Report

❌ Patch coverage is 75.24752% with 75 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.18%. Comparing base (f483c69) to head (aea5b4a).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1450      +/-   ##
==========================================
- Coverage   71.20%   71.18%   -0.03%     
==========================================
  Files         424      424              
  Lines       69802    69864      +62     
==========================================
+ Hits        49700    49730      +30     
- Misses      20102    20134      +32     
Components Coverage Δ
libdd-crashtracker 62.37% <ø> (+0.01%) ⬆️
libdd-crashtracker-ffi 16.80% <ø> (ø)
libdd-alloc 98.73% <ø> (ø)
libdd-data-pipeline 86.86% <ø> (ø)
libdd-data-pipeline-ffi 78.68% <ø> (ø)
libdd-common 80.58% <ø> (ø)
libdd-common-ffi 74.54% <ø> (ø)
libdd-telemetry 65.09% <ø> (ø)
libdd-telemetry-ffi 21.17% <ø> (ø)
libdd-dogstatsd-client 83.75% <ø> (ø)
datadog-ipc 82.60% <ø> (ø)
libdd-profiling 81.47% <78.08%> (-0.26%) ⬇️
libdd-profiling-ffi 64.79% <68.42%> (+0.07%) ⬆️
datadog-sidecar 34.39% <ø> (ø)
datdog-sidecar-ffi 7.67% <ø> (ø)
spawn-worker 55.18% <ø> (ø)
libdd-tinybytes 93.43% <ø> (ø)
libdd-trace-normalization 82.33% <ø> (ø)
libdd-trace-obfuscation 94.17% <ø> (ø)
libdd-trace-protobuf 61.18% <ø> (ø)
libdd-trace-utils 89.37% <ø> (ø)
datadog-tracer-flare 62.06% <ø> (ø)
libdd-log 75.57% <ø> (ø)
🚀 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.

@danielsn danielsn force-pushed the dsn/sample-type-enum branch 2 times, most recently from 79ff759 to bd8abfc Compare January 14, 2026 23:19
@dd-octo-sts
Copy link

dd-octo-sts bot commented Jan 15, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 91.69 MB 91.65 MB --.04% (-39.37 KB) 💪
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.38 MB 8.38 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 106.40 MB 106.35 MB --.04% (-52.66 KB) 💪
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.76 MB 10.76 MB +0% (+104 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 25.08 MB 25.07 MB --.04% (-12.50 KB) 💪
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 75.94 KB 75.94 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 172.51 MB 172.34 MB --.09% (-168.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 882.83 MB 881.94 MB --.10% (-915.71 KB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.57 MB 9.56 MB --.04% (-4.00 KB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 75.94 KB 75.94 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 23.04 MB 23.03 MB --.03% (-8.00 KB) 💪
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 48.45 MB 48.44 MB --.02% (-10.93 KB) 💪
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 21.22 MB 21.21 MB --.05% (-13.00 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 77.12 KB 77.12 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 176.66 MB 176.45 MB --.11% (-216.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 866.92 MB 866.64 MB --.03% (-287.95 KB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 7.24 MB 7.24 MB -0% (-512 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 77.12 KB 77.12 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 24.62 MB 24.60 MB --.06% (-16.00 KB) 💪
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 44.15 MB 44.14 MB --.02% (-10.58 KB) 💪
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 80.18 MB 80.14 MB --.05% (-43.06 KB) 💪
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 9.88 MB 9.87 MB --.03% (-4.00 KB) 💪
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 100.31 MB 100.26 MB --.04% (-50.33 KB) 💪
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.44 MB 11.44 MB -0% (-1016 B) 👌

@danielsn danielsn force-pushed the dsn/sample-type-enum branch 2 times, most recently from 60395d1 to 4650827 Compare January 22, 2026 21:52
@danielsn danielsn marked this pull request as ready for review January 22, 2026 21:53
@danielsn danielsn requested review from a team as code owners January 22, 2026 21:53
@danielsn danielsn force-pushed the dsn/sample-type-enum branch 2 times, most recently from 3c1a633 to 2e7531b Compare January 23, 2026 13:56
Copy link
Member

@ivoanjo ivoanjo left a comment

Choose a reason for hiding this comment

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

Looks very reasonable! Left a few small comments + this would probably benefit from a pass from a real rustacean as I won't catch the more minute details there ;)

Comment on lines -44 to -46
/// When profiles are reset, the period needs to be preserved. This
/// stores it in a way that does not depend on the string table.
owned_period: Option<owned_types::Period>,
Copy link
Member

Choose a reason for hiding this comment

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

I'm curious, why change the period as well?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Now that we have a structured enum, might as well use it

@danielsn danielsn force-pushed the dsn/sample-type-enum branch from 2e7531b to 16bc2b2 Compare February 5, 2026 19:51
@github-actions
Copy link

github-actions bot commented Feb 5, 2026

📚 Documentation Check Results

⚠️ 632 documentation warning(s) found

📦 libdd-profiling - 632 warning(s)


Updated: 2026-02-06 23:26:17 UTC | Commit: ad38329 | missing-docs job results

@github-actions
Copy link

github-actions bot commented Feb 5, 2026

🔒 Cargo Deny Results

⚠️ 6 issue(s) found, showing only errors (advisories, bans, sources)

📦 libdd-profiling - 6 error(s)

Show output
error[vulnerability]: Integer overflow in `BytesMut::reserve`
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:35:1
   │
35 │ bytes 1.8.0 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0007
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0007
   ├ In the unique reclaim path of `BytesMut::reserve`, the condition
     ```rs
     if v_capacity >= new_cap + offset
     ```
     uses an unchecked addition. When `new_cap + offset` overflows `usize` in release builds, this condition may incorrectly pass, causing `self.cap` to be set to a value that exceeds the actual allocated capacity. Subsequent APIs such as `spare_capacity_mut()` then trust this corrupted `cap` value and may create out-of-bounds slices, leading to UB.
     
     This behavior is observable in release builds (integer overflow wraps), whereas debug builds panic due to overflow checks.
     
     ## PoC
     
     ```rs
     use bytes::*;
     
     fn main() {
         let mut a = BytesMut::from(&b"hello world"[..]);
         let mut b = a.split_off(5);
     
         // Ensure b becomes the unique owner of the backing storage
         drop(a);
     
         // Trigger overflow in new_cap + offset inside reserve
         b.reserve(usize::MAX - 6);
     
         // This call relies on the corrupted cap and may cause UB & HBO
         b.put_u8(b'h');
     }
     ```
     
     # Workarounds
     
     Users of `BytesMut::reserve` are only affected if integer overflow checks are configured to wrap. When integer overflow is configured to panic, this issue does not apply.
   ├ Announcement: https://github.com/advisories/GHSA-434x-w66g-qw3r
   ├ Solution: Upgrade to >=1.11.1 (try `cargo update -p bytes`)
   ├ bytes v1.8.0
     ├── combine v4.6.7
     │   └── jni v0.21.1
     │       └── rustls-platform-verifier v0.6.2
     │           └── reqwest v0.13.1
     │               ├── libdd-common v1.1.0
     │               │   └── (dev) libdd-profiling v1.0.0
     │               │       └── (dev) libdd-profiling v1.0.0 (*)
     │               └── libdd-profiling v1.0.0 (*)
     ├── http v1.1.0
     │   ├── http-body v1.0.1
     │   │   ├── http-body-util v0.1.2
     │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   ├── libdd-profiling v1.0.0 (*)
     │   │   │   └── reqwest v0.13.1 (*)
     │   │   ├── hyper v1.6.0
     │   │   │   ├── hyper-rustls v0.27.3
     │   │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   │   └── reqwest v0.13.1 (*)
     │   │   │   ├── hyper-util v0.1.17
     │   │   │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   │   └── reqwest v0.13.1 (*)
     │   │   │   ├── libdd-common v1.1.0 (*)
     │   │   │   └── reqwest v0.13.1 (*)
     │   │   ├── hyper-util v0.1.17 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   ├── reqwest v0.13.1 (*)
     │   │   └── tower-http v0.6.8
     │   │       └── reqwest v0.13.1 (*)
     │   ├── http-body-util v0.1.2 (*)
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── libdd-common v1.1.0 (*)
     │   ├── libdd-profiling v1.0.0 (*)
     │   ├── reqwest v0.13.1 (*)
     │   └── tower-http v0.6.8 (*)
     ├── http-body v1.0.1 (*)
     ├── http-body-util v0.1.2 (*)
     ├── hyper v1.6.0 (*)
     ├── hyper-util v0.1.17 (*)
     ├── libdd-profiling v1.0.0 (*)
     ├── prost v0.14.3
     │   ├── libdd-profiling v1.0.0 (*)
     │   └── libdd-profiling-protobuf v1.0.0
     │       ├── libdd-profiling v1.0.0 (*)
     │       └── (dev) libdd-profiling-protobuf v1.0.0 (*)
     ├── reqwest v0.13.1 (*)
     ├── tokio v1.49.0
     │   ├── hyper v1.6.0 (*)
     │   ├── hyper-rustls v0.27.3 (*)
     │   ├── hyper-util v0.1.17 (*)
     │   ├── (dev) libdd-common v1.1.0 (*)
     │   ├── libdd-profiling v1.0.0 (*)
     │   ├── reqwest v0.13.1 (*)
     │   ├── tokio-rustls v0.26.0
     │   │   ├── hyper-rustls v0.27.3 (*)
     │   │   ├── libdd-common v1.1.0 (*)
     │   │   └── reqwest v0.13.1 (*)
     │   ├── tokio-util v0.7.12
     │   │   └── libdd-profiling v1.0.0 (*)
     │   └── tower v0.5.2
     │       ├── reqwest v0.13.1 (*)
     │       └── tower-http v0.6.8 (*)
     ├── tokio-util v0.7.12 (*)
     └── tower-http v0.6.8 (*)

error[vulnerability]: Lenient `hyper` header parsing of `Content-Length` could allow request smuggling
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:100:1
    │
100 │ hyper 0.10.16 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2021-0078
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2021-0078
    ├ `hyper`'s HTTP header parser accepted, according to RFC 7230, illegal contents inside `Content-Length` headers.
      Due to this, upstream HTTP proxies that ignore the header may still forward them along if it chooses to ignore the error.
      
      To be vulnerable, `hyper` must be used as an HTTP/1 server and using an HTTP proxy upstream that ignores the header's contents
      but still forwards it. Due to all the factors that must line up, an attack exploiting this vulnerability is unlikely.
    ├ Announcement: https://github.com/hyperium/hyper/security/advisories/GHSA-f3pg-qwvg-p99c
    ├ Solution: Upgrade to >=0.14.10 (try `cargo update -p hyper`)
    ├ hyper v0.10.16
      ├── iron v0.6.1
      │   └── multipart v0.18.0
      │       ├── libdd-common v1.1.0
      │       │   └── (dev) libdd-profiling v1.0.0
      │       │       └── (dev) libdd-profiling v1.0.0 (*)
      │       └── libdd-profiling v1.0.0 (*)
      ├── multipart v0.18.0 (*)
      └── nickel v0.11.0
          └── multipart v0.18.0 (*)

error[vulnerability]: Integer overflow in `hyper`'s parsing of the `Transfer-Encoding` header leads to data loss
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:100:1
    │
100 │ hyper 0.10.16 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2021-0079
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2021-0079
    ├ When decoding chunk sizes that are too large, `hyper`'s code would encounter an integer overflow. Depending on the situation,
      this could lead to data loss from an incorrect total size, or in rarer cases, a request smuggling attack.
      
      To be vulnerable, you must be using `hyper` for any HTTP/1 purpose, including as a client or server, and consumers must send
      requests or responses that specify a chunk size greater than 18 exabytes. For a possible request smuggling attack to be possible,
      any upstream proxies must accept a chunk size greater than 64 bits.
    ├ Announcement: https://github.com/hyperium/hyper/security/advisories/GHSA-5h46-h7hh-c6x9
    ├ Solution: Upgrade to >=0.14.10 (try `cargo update -p hyper`)
    ├ hyper v0.10.16
      ├── iron v0.6.1
      │   └── multipart v0.18.0
      │       ├── libdd-common v1.1.0
      │       │   └── (dev) libdd-profiling v1.0.0
      │       │       └── (dev) libdd-profiling v1.0.0 (*)
      │       └── libdd-profiling v1.0.0 (*)
      ├── multipart v0.18.0 (*)
      └── nickel v0.11.0
          └── multipart v0.18.0 (*)

error[vulnerability]: `idna` accepts Punycode labels that do not produce any non-ASCII when decoded
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:116:1
    │
116 │ idna 0.1.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2024-0421
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2024-0421
    ├ `idna` 0.5.0 and earlier accepts Punycode labels that do not produce any non-ASCII output, which means that either ASCII labels or the empty root label can be masked such that they appear unequal without IDNA processing or when processed with a different implementation and equal when processed with `idna` 0.5.0 or earlier.
      
      Concretely, `example.org` and `xn--example-.org` become equal after processing by `idna` 0.5.0 or earlier. Also, `example.org.xn--` and `example.org.` become equal after processing by `idna` 0.5.0 or earlier.
      
      In applications using `idna` (but not in `idna` itself) this may be able to lead to privilege escalation when host name comparison is part of a privilege check and the behavior is combined with a client that resolves domains with such labels instead of treating them as errors that preclude DNS resolution / URL fetching and with the attacker managing to introduce a DNS entry (and TLS certificate) for an `xn--`-masked name that turns into the name of the target when processed by `idna` 0.5.0 or earlier.
      
      ## Remedy
      
      Upgrade to `idna` 1.0.3 or later, if depending on `idna` directly, or to `url` 2.5.4 or later, if depending on `idna` via `url`. (This issue was fixed in `idna` 1.0.0, but versions earlier than 1.0.3 are not recommended for other reasons.)
      
      When upgrading, please take a moment to read about [alternative Unicode back ends for `idna`](https://docs.rs/crate/idna_adapter/latest).
      
      If you are using Rust earlier than 1.81 in combination with SQLx 0.8.2 or earlier, please also read an [issue](https://github.com/servo/rust-url/issues/992) about combining them with `url` 2.5.4 and `idna` 1.0.3.
      
      ## Additional information
      
      This issue resulted from `idna` 0.5.0 and earlier implementing the UTS 46 specification literally on this point and the specification having this bug. The specification bug has been fixed in [revision 33 of UTS 46](https://www.unicode.org/reports/tr46/tr46-33.html#Modifications).
      
      ## Acknowledgements
      
      Thanks to kageshiron for recognizing the security implications of this behavior.
    ├ Announcement: https://bugzilla.mozilla.org/show_bug.cgi?id=1887898
    ├ Solution: Upgrade to >=1.0.0 (try `cargo update -p idna`)
    ├ idna v0.1.5
      └── url v1.7.2
          ├── hyper v0.10.16
          │   ├── iron v0.6.1
          │   │   └── multipart v0.18.0
          │   │       ├── libdd-common v1.1.0
          │   │       │   └── (dev) libdd-profiling v1.0.0
          │   │       │       └── (dev) libdd-profiling v1.0.0 (*)
          │   │       └── libdd-profiling v1.0.0 (*)
          │   ├── multipart v0.18.0 (*)
          │   └── nickel v0.11.0
          │       └── multipart v0.18.0 (*)
          ├── iron v0.6.1 (*)
          ├── nickel v0.11.0 (*)
          └── tiny_http v0.6.4
              └── multipart v0.18.0 (*)

error[unmaintained]: multipart is Unmaintained
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:157:1
    │
157 │ multipart 0.18.0 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unmaintained advisory detected
    │
    ├ ID: RUSTSEC-2023-0050
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2023-0050
    ├ The `multipart` crate is unmaintained. The author has archived the github
      repository.
      
      Alternatives:
      
      - [multer](https://crates.io/crates/multer)
      - [multiparty](https://crates.io/crates/multiparty)
    ├ Solution: No safe upgrade is available!
    ├ multipart v0.18.0
      ├── libdd-common v1.1.0
      │   └── (dev) libdd-profiling v1.0.0
      │       └── (dev) libdd-profiling v1.0.0 (*)
      └── libdd-profiling v1.0.0 (*)

error[vulnerability]: Potential segfault in the time crate
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:266:1
    │
266 │ time 0.1.45 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2020-0071
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2020-0071
    ├ ### Impact
      
      The affected functions set environment variables without synchronization. On Unix-like operating systems, this can crash in multithreaded programs. Programs may segfault due to dereferencing a dangling pointer if an environment variable is read in a different thread than the affected functions. This may occur without the user's knowledge, notably in the Rust standard library or third-party libraries.
      
      The affected functions from time 0.2.7 through 0.2.22 are:
      
      - `time::UtcOffset::local_offset_at`
      - `time::UtcOffset::try_local_offset_at`
      - `time::UtcOffset::current_local_offset`
      - `time::UtcOffset::try_current_local_offset`
      - `time::OffsetDateTime::now_local`
      - `time::OffsetDateTime::try_now_local`
      
      The affected functions in time 0.1 (all versions) are:
      
      - `time::at_utc`
      - `time::at`
      - `time::now`
      - `time::tzset`
      
      Non-Unix targets (including Windows and wasm) are unaffected.
      
      ### Patches
      
      Pending a proper fix, the internal method that determines the local offset has been modified to always return `None` on the affected operating systems. This has the effect of returning an `Err` on the `try_*` methods and `UTC` on the non-`try_*` methods.
      
      Users and library authors with time in their dependency tree should perform `cargo update`, which will pull in the updated, unaffected code.
      
      Users of time 0.1 do not have a patch and should upgrade to an unaffected version: time 0.2.23 or greater or the 0.3 series.
      
      ### Workarounds
      
      A possible workaround for crates affected through the transitive dependency in `chrono`, is to avoid using the default `oldtime` feature dependency of the `chrono` crate by disabling its `default-features` and manually specifying the required features instead.
      
      #### Examples:
      
      `Cargo.toml`:  
      
      ```toml
      chrono = { version = "0.4", default-features = false, features = ["serde"] }
      ```
      
      ```toml
      chrono = { version = "0.4.22", default-features = false, features = ["clock"] }
      ```
      
      Commandline:  
      
      ```bash
      cargo add chrono --no-default-features -F clock
      ```
      
      Sources:  
       - [chronotope/chrono#602 (comment)](https://github.com/chronotope/chrono/issues/602#issuecomment-1242149249)  
       - [vityafx/serde-aux#21](https://github.com/vityafx/serde-aux/issues/21)
    ├ Announcement: https://github.com/time-rs/time/issues/293
    ├ Solution: Upgrade to >=0.2.23 (try `cargo update -p time`)
    ├ time v0.1.45
      ├── hyper v0.10.16
      │   ├── iron v0.6.1
      │   │   └── multipart v0.18.0
      │   │       ├── libdd-common v1.1.0
      │   │       │   └── (dev) libdd-profiling v1.0.0
      │   │       │       └── (dev) libdd-profiling v1.0.0 (*)
      │   │       └── libdd-profiling v1.0.0 (*)
      │   ├── multipart v0.18.0 (*)
      │   └── nickel v0.11.0
      │       └── multipart v0.18.0 (*)
      └── nickel v0.11.0 (*)

advisories FAILED, bans ok, sources ok

Updated: 2026-02-06 23:28:54 UTC | Commit: ad38329 | dependency-check job results

@danielsn danielsn force-pushed the dsn/sample-type-enum branch from 16bc2b2 to d401aa8 Compare February 5, 2026 20:44
@danielsn
Copy link
Contributor Author

danielsn commented Feb 5, 2026

/merge

@gh-worker-devflow-routing-ef8351
Copy link

gh-worker-devflow-routing-ef8351 bot commented Feb 5, 2026

View all feedbacks in Devflow UI.

2026-02-05 22:04:33 UTC ℹ️ Start processing command /merge


2026-02-05 22:04:38 UTC ℹ️ MergeQueue: waiting for PR to be ready

This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals. View in MergeQueue UI.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.


2026-02-06 02:05:07 UTC ⚠️ MergeQueue: This merge request was unqueued

devflow unqueued this merge request: It did not become mergeable within the expected time

@danielsn
Copy link
Contributor Author

danielsn commented Feb 6, 2026

/merge

@gh-worker-devflow-routing-ef8351
Copy link

gh-worker-devflow-routing-ef8351 bot commented Feb 6, 2026

View all feedbacks in Devflow UI.

2026-02-06 16:25:26 UTC ℹ️ Start processing command /merge


2026-02-06 16:25:33 UTC ℹ️ MergeQueue: waiting for PR to be ready

This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals. View in MergeQueue UI.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.


2026-02-06 18:13:08 UTC ℹ️ MergeQueue: merge request added to the queue

The expected merge time in main is approximately 35m (p90).


2026-02-06 18:27:58 UTC ℹ️ MergeQueue: Retrying because an high priority merge request needed to be processed first. No action is needed from your side.


2026-02-06 18:28:06 UTCMergeQueue: This merge request is not mergeable, blocked by github

PR can't be merged according to github policy. It's probably because:

  • some status checks are failing:
    • dd-gitlab/default-pipeline
    • dd-gitlab/report_gitlab_CI_status

@danielsn
Copy link
Contributor Author

danielsn commented Feb 6, 2026

/merge

@gh-worker-devflow-routing-ef8351
Copy link

gh-worker-devflow-routing-ef8351 bot commented Feb 6, 2026

View all feedbacks in Devflow UI.

2026-02-06 19:24:45 UTC ℹ️ Start processing command /merge


2026-02-06 19:24:51 UTC ℹ️ MergeQueue: waiting for PR to be ready

This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals. View in MergeQueue UI.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.


2026-02-06 23:25:12 UTC ⚠️ MergeQueue: This merge request was unqueued

devflow unqueued this merge request: It did not become mergeable within the expected time

danielsn and others added 3 commits February 6, 2026 19:44
# What does this PR do?

Reverts #1478 

# Motivation

As per the event-platform-intake team:
        // Note: We don't set Content-Type for file attachments in the multipart form.
        // The intake backend treats all attachments as raw bytes (application/octet-stream)
        // and detects compression by reading magic bytes (gzip/zstd/etc headers).
        // Content-Type is only meaningful for the main "event" part (set to application/json).
        // Attachments are not forwarded beyond intake, so their MIME types are not needed.

# 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: daniel.schwartznarbonne <daniel.schwartznarbonne@datadoghq.com>
…cripts (#1506)

# What does this PR do?

Attempt to fix a potential race condition with the [all-checks](https://github.com/DataDog/libdatadog/blob/b44bb77dc7e7dcfd8e47d9e8c2bbe1d3cfa894f6/.github/workflows/all-checks.yml) workflow and [report_gitlab_CI_status](https://github.com/DataDog/libdatadog/blob/b44bb77dc7e7dcfd8e47d9e8c2bbe1d3cfa894f6/.gitlab-ci.yml#L42)

`report_gitlab_CI_status` is `post` stage and doesn't get created until after dependent jobs run. 
If all gitlab benchmark and github actions successfully complete, but `report_gitlab_CI_status` hasn't been created yet, then all-checks can pass because all-checks doesn't see anything pending.

The `dd-gitlab/default-pipeline` check has been enabled for this repo by ci-infra. This should solve our problems and remove the need for custom scripts. It will pass when the Gitlab pipeline completes. This check will be added to the branch protection rule for main. all-checks will just be used for github steps.

# Motivation

all-checks passed on #1428 , despite tests failing on the alpine builds in gitlab. 

# 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: edmund.kump <edmund.kump@datadoghq.com>
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.

5 participants