Skip to content

[crashtracker] Don't send the same stack trace twice #1005

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
May 28, 2025

Conversation

danielsn
Copy link
Contributor

@danielsn danielsn commented Apr 4, 2025

What does this PR do?

Currently we send the stacktrace in the log message, and again as part of the crash_info payload. This wastes bytes for no reason. Instead, just send it in the crash_info payload.

Motivation

Lets not waste bytes.

Additional Notes

This will likely require synchronization with the backend.

How to test the change?

Describe here in detail how the change can be validated.

@pr-commenter
Copy link

pr-commenter bot commented Apr 4, 2025

Benchmarks

Comparison

Benchmark execution time: 2025-05-28 18:17:38

Comparing candidate commit ded14a7 in PR branch dsn/crashtracker-double-stacks with baseline commit b04975d in branch main.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 52 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 ded14a7 1748455343 dsn/crashtracker-double-stacks
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 534.880µs 543.374µs ± 5.949µs 542.531µs ± 3.859µs 546.476µs 554.339µs 563.046µs 566.865µs 4.49% 1.088 1.691 1.09% 0.421µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1764089.733op/s 1840570.006op/s ± 19922.799op/s 1843211.861op/s ± 13103.239op/s 1855281.090op/s 1866877.685op/s 1869286.880op/s 1869578.018op/s 1.43% -1.009 1.404 1.08% 1408.755op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 464.771µs 465.507µs ± 0.307µs 465.492µs ± 0.177µs 465.683µs 466.049µs 466.256µs 466.953µs 0.31% 0.654 1.816 0.07% 0.022µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2141545.084op/s 2148195.451op/s ± 1414.380op/s 2148265.118op/s ± 814.923op/s 2149055.492op/s 2150393.265op/s 2150909.025op/s 2151597.969op/s 0.16% -0.647 1.793 0.07% 100.012op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 186.157µs 186.776µs ± 0.243µs 186.769µs ± 0.167µs 186.939µs 187.181µs 187.356µs 187.629µs 0.46% 0.312 0.234 0.13% 0.017µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5329676.465op/s 5354028.688op/s ± 6971.512op/s 5354194.346op/s ± 4771.732op/s 5358615.101op/s 5364462.488op/s 5367193.571op/s 5371822.080op/s 0.33% -0.303 0.223 0.13% 492.960op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 39.708µs 39.859µs ± 0.057µs 39.853µs ± 0.035µs 39.894µs 39.956µs 40.020µs 40.049µs 0.49% 0.329 0.567 0.14% 0.004µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 24969244.753op/s 25088733.877op/s ± 36120.768op/s 25092525.024op/s ± 21947.920op/s 25111443.971op/s 25142735.982op/s 25165787.746op/s 25183923.644op/s 0.36% -0.318 0.555 0.14% 2554.124op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.953µs 47.082µs ± 0.095µs 47.071µs ± 0.031µs 47.104µs 47.178µs 47.261µs 48.201µs 2.40% 8.236 93.555 0.20% 0.007µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 20746481.723op/s 21239777.006op/s ± 42285.346op/s 21244290.001op/s ± 14215.940op/s 21258207.624op/s 21274353.369op/s 21285781.034op/s 21298000.668op/s 0.25% -8.069 90.920 0.20% 2990.025op/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 [542.550µs; 544.198µs] or [-0.152%; +0.152%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [1837808.898op/s; 1843331.114op/s] or [-0.150%; +0.150%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [465.465µs; 465.550µs] or [-0.009%; +0.009%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2147999.432op/s; 2148391.471op/s] or [-0.009%; +0.009%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [186.742µs; 186.809µs] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5353062.503op/s; 5354994.872op/s] or [-0.018%; +0.018%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [39.851µs; 39.867µs] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [25083727.886op/s; 25093739.868op/s] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [47.068µs; 47.095µs] or [-0.028%; +0.028%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21233916.663op/s; 21245637.348op/s] or [-0.028%; +0.028%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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.893µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.916µs 3.919µs 3.921µs 0.24% -0.763 5.701 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 255068005.837op/s 255669608.458op/s ± 200905.425op/s 255669966.258op/s ± 128803.901op/s 255810385.903op/s 255949278.579op/s 256020379.016op/s 256881961.132op/s 0.47% 0.780 5.794 0.08% 14206.159op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 76.777µs 77.405µs ± 0.388µs 77.363µs ± 0.251µs 77.598µs 78.100µs 78.498µs 78.861µs 1.94% 0.910 0.876 0.50% 0.027µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12680566.388op/s 12919419.319op/s ± 64409.745op/s 12926066.150op/s ± 41932.407op/s 12969927.608op/s 13005141.648op/s 13017761.372op/s 13024808.352op/s 0.76% -0.880 0.785 0.50% 4554.457op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 70.864µs 71.313µs ± 0.278µs 71.243µs ± 0.157µs 71.440µs 71.804µs 72.060µs 72.633µs 1.95% 1.389 3.297 0.39% 0.020µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13767830.439op/s 14022825.719op/s ± 54394.425op/s 14036436.001op/s ± 30905.961op/s 14062515.663op/s 14090259.265op/s 14098403.868op/s 14111452.855op/s 0.53% -1.350 3.096 0.39% 3846.267op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.891µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.912µs 3.915µs 3.916µs 3.917µs 0.15% -1.978 15.223 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 255302009.697op/s 255700540.755op/s ± 172513.867op/s 255686947.184op/s ± 100250.201op/s 255799480.418op/s 255917281.449op/s 255992919.426op/s 257016024.854op/s 0.52% 2.005 15.464 0.07% 12198.573op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 67.010µs 67.691µs ± 0.380µs 67.644µs ± 0.259µs 67.942µs 68.340µs 68.657µs 68.917µs 1.88% 0.542 -0.128 0.56% 0.027µs 1 200
credit_card/is_card_number/378282246310005 throughput 14510133.956op/s 14773409.924op/s ± 82585.198op/s 14783333.275op/s ± 56499.856op/s 14835160.815op/s 14893561.877op/s 14918890.610op/s 14923035.955op/s 0.95% -0.516 -0.174 0.56% 5839.655op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 51.737µs 51.823µs ± 0.034µs 51.822µs ± 0.023µs 51.846µs 51.879µs 51.905µs 51.912µs 0.17% 0.106 -0.327 0.07% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19263364.952op/s 19296644.645op/s ± 12600.928op/s 19296899.560op/s ± 8717.012op/s 19305373.265op/s 19316839.653op/s 19321083.075op/s 19328376.767op/s 0.16% -0.102 -0.329 0.07% 891.020op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.028µs 6.171µs ± 0.086µs 6.160µs ± 0.061µs 6.231µs 6.314µs 6.392µs 6.442µs 4.57% 0.338 -0.319 1.39% 0.006µs 1 200
credit_card/is_card_number/x371413321323331 throughput 155235149.610op/s 162085714.307op/s ± 2246612.026op/s 162333210.725op/s ± 1594953.183op/s 163706244.846op/s 165775636.325op/s 165859646.797op/s 165887096.361op/s 2.19% -0.274 -0.410 1.38% 158859.460op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.897µs 3.911µs ± 0.003µs 3.911µs ± 0.002µs 3.913µs 3.916µs 3.918µs 3.920µs 0.23% -0.171 2.489 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 255110312.513op/s 255670460.004op/s ± 183610.545op/s 255684326.551op/s ± 117939.904op/s 255791503.036op/s 255930118.387op/s 255994031.169op/s 256587793.766op/s 0.35% 0.180 2.521 0.07% 12983.226op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.983µs 66.276µs ± 0.198µs 66.232µs ± 0.100µs 66.339µs 66.764µs 66.880µs 67.050µs 1.23% 1.489 2.101 0.30% 0.014µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 14914337.380op/s 15088544.511op/s ± 44928.597op/s 15098339.190op/s ± 22697.855op/s 15118858.508op/s 15136668.698op/s 15148387.464op/s 15155377.750op/s 0.38% -1.472 2.044 0.30% 3176.932op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 59.447µs 59.598µs ± 0.058µs 59.595µs ± 0.039µs 59.633µs 59.694µs 59.741µs 59.770µs 0.29% 0.231 0.049 0.10% 0.004µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 16730933.035op/s 16779180.012op/s ± 16307.752op/s 16780025.896op/s ± 10889.864op/s 16790851.085op/s 16802238.478op/s 16815397.959op/s 16821571.984op/s 0.25% -0.226 0.047 0.10% 1153.132op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.892µs 3.912µs ± 0.003µs 3.912µs ± 0.002µs 3.913µs 3.916µs 3.918µs 3.920µs 0.20% -1.074 6.931 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255129657.650op/s 255650520.836op/s ± 200039.236op/s 255637292.176op/s ± 137150.976op/s 255783231.864op/s 255922294.168op/s 256010741.254op/s 256926851.408op/s 0.50% 1.092 7.055 0.08% 14144.910op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 56.153µs 56.274µs ± 0.082µs 56.257µs ± 0.042µs 56.306µs 56.401µs 56.504µs 56.824µs 1.01% 2.554 12.533 0.15% 0.006µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17598090.073op/s 17770189.578op/s ± 25870.743op/s 17775449.439op/s ± 13146.293op/s 17787349.637op/s 17800014.240op/s 17806509.669op/s 17808361.026op/s 0.19% -2.519 12.249 0.15% 1829.338op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 51.752µs 51.815µs ± 0.038µs 51.808µs ± 0.022µs 51.835µs 51.893µs 51.914µs 51.956µs 0.28% 0.915 0.702 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19247024.648op/s 19299323.336op/s ± 14151.879op/s 19301867.376op/s ± 8375.188op/s 19309160.057op/s 19317197.320op/s 19320202.159op/s 19322986.306op/s 0.11% -0.911 0.691 0.07% 1000.689op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.027µs 6.159µs ± 0.087µs 6.148µs ± 0.061µs 6.218µs 6.331µs 6.391µs 6.432µs 4.62% 0.683 0.062 1.40% 0.006µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 155483392.190op/s 162407320.276op/s ± 2263767.614op/s 162662834.152op/s ± 1601672.285op/s 164175340.702op/s 165687967.246op/s 165856653.118op/s 165922292.307op/s 2.00% -0.617 -0.072 1.39% 160072.543op/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.911µs; 3.912µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ throughput [255641764.898op/s; 255697452.018op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [77.351µs; 77.459µs] or [-0.069%; +0.069%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12910492.748op/s; 12928345.890op/s] or [-0.069%; +0.069%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [71.275µs; 71.352µs] or [-0.054%; +0.054%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14015287.175op/s; 14030364.263op/s] or [-0.054%; +0.054%] None None None
credit_card/is_card_number/37828224631 execution_time [3.910µs; 3.911µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631 throughput [255676631.992op/s; 255724449.518op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/378282246310005 execution_time [67.639µs; 67.744µs] or [-0.078%; +0.078%] None None None
credit_card/is_card_number/378282246310005 throughput [14761964.410op/s; 14784855.438op/s] or [-0.077%; +0.077%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [51.818µs; 51.827µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19294898.278op/s; 19298391.013op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.159µs; 6.183µs] or [-0.193%; +0.193%] None None None
credit_card/is_card_number/x371413321323331 throughput [161774355.488op/s; 162397073.127op/s] or [-0.192%; +0.192%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [255645013.348op/s; 255695906.659op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [66.249µs; 66.304µs] or [-0.041%; +0.041%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15082317.839op/s; 15094771.182op/s] or [-0.041%; +0.041%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [59.590µs; 59.606µs] or [-0.013%; +0.013%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [16776919.914op/s; 16781440.109op/s] or [-0.013%; +0.013%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.911µs; 3.912µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255622797.322op/s; 255678244.351op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [56.263µs; 56.286µs] or [-0.020%; +0.020%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [17766604.142op/s; 17773775.014op/s] or [-0.020%; +0.020%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [51.810µs; 51.821µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19297362.022op/s; 19301284.651op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.147µs; 6.171µs] or [-0.195%; +0.195%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [162093583.856op/s; 162721056.695op/s] or [-0.193%; +0.193%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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 215.699µs 216.144µs ± 0.321µs 216.113µs ± 0.168µs 216.288µs 216.529µs 216.787µs 219.240µs 1.45% 4.737 41.870 0.15% 0.023µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 4561208.486op/s 4626562.305op/s ± 6823.278op/s 4627217.785op/s ± 3602.524op/s 4630696.803op/s 4633781.921op/s 4635381.175op/s 4636098.090op/s 0.19% -4.643 40.657 0.15% 482.479op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 19.499µs 19.720µs ± 0.116µs 19.741µs ± 0.056µs 19.782µs 19.839µs 19.931µs 20.700µs 4.86% 2.743 23.926 0.59% 0.008µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 48310275.843op/s 50710752.952op/s ± 293409.868op/s 50656631.282op/s ± 143793.832op/s 50878939.390op/s 51195878.847op/s 51239005.829op/s 51283984.406op/s 1.24% -2.435 20.842 0.58% 20747.211op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 12.038µs 12.135µs ± 0.058µs 12.122µs ± 0.029µs 12.162µs 12.258µs 12.288µs 12.332µs 1.73% 0.992 0.497 0.48% 0.004µs 1 200
normalization/normalize_name/normalize_name/good throughput 81093109.576op/s 82407245.441op/s ± 392785.414op/s 82497638.749op/s ± 201208.854op/s 82682668.482op/s 82947345.157op/s 82998444.984op/s 83068538.739op/s 0.69% -0.970 0.449 0.48% 27774.123op/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 [216.099µs; 216.188µs] or [-0.021%; +0.021%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [4625616.664op/s; 4627507.945op/s] or [-0.020%; +0.020%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [19.704µs; 19.736µs] or [-0.081%; +0.081%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [50670089.166op/s; 50751416.738op/s] or [-0.080%; +0.080%] None None None
normalization/normalize_name/normalize_name/good execution_time [12.127µs; 12.143µs] or [-0.066%; +0.066%] None None None
normalization/normalize_name/normalize_name/good throughput [82352809.160op/s; 82461681.721op/s] or [-0.066%; +0.066%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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.209µs 33.907µs ± 1.251µs 33.327µs ± 0.050µs 33.434µs 36.589µs 36.642µs 37.776µs 13.35% 1.713 1.024 3.68% 0.088µ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 [33.733µs; 34.080µs] or [-0.511%; +0.511%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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 5.974ms 5.987ms ± 0.007ms 5.987ms ± 0.003ms 5.990ms 5.998ms 6.007ms 6.035ms 0.81% 2.347 13.042 0.11% 0.000ms 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 [5.986ms; 5.988ms] or [-0.016%; +0.016%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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.253µs 3.147µs ± 1.454µs 2.973µs ± 0.025µs 2.995µs 3.261µs 13.905µs 15.549µs 422.96% 7.587 57.939 46.09% 0.103µ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.945µs; 3.348µs] or [-6.403%; +6.403%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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 17.651µs 25.211µs ± 10.471µs 17.881µs ± 0.128µs 35.099µs 44.634µs 49.911µs 86.991µs 386.49% 1.587 4.585 41.43% 0.740µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [23.760µs; 26.662µs] or [-5.756%; +5.756%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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 71.859ms 72.092ms ± 0.161ms 72.049ms ± 0.055ms 72.119ms 72.441ms 72.645ms 73.017ms 1.34% 2.267 6.814 0.22% 0.011ms 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 [72.070ms; 72.115ms] or [-0.031%; +0.031%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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.876µs 4.945µs ± 0.047µs 4.919µs ± 0.023µs 4.996µs 5.015µs 5.018µs 5.018µs 2.02% 0.437 -1.525 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 [4.938µs; 4.951µs] or [-0.133%; +0.133%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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 252.216ns 263.606ns ± 13.339ns 256.689ns ± 3.533ns 269.842ns 290.882ns 299.007ns 303.939ns 18.41% 1.188 0.137 5.05% 0.943ns 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 [261.758ns; 265.455ns] or [-0.701%; +0.701%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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 67.451µs 67.658µs ± 0.221µs 67.625µs ± 0.052µs 67.676µs 67.881µs 68.246µs 70.141µs 3.72% 8.087 82.149 0.33% 0.016µ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 [67.627µs; 67.688µs] or [-0.045%; +0.045%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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.432µs 2.456µs ± 0.030µs 2.443µs ± 0.008µs 2.458µs 2.541µs 2.548µs 2.552µs 4.46% 1.943 2.747 1.23% 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.452µs; 2.460µs] or [-0.171%; +0.171%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ded14a7 1748455343 dsn/crashtracker-double-stacks
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 147.064µs 147.738µs ± 0.234µs 147.744µs ± 0.124µs 147.846µs 148.109µs 148.340µs 148.758µs 0.69% 0.596 2.961 0.16% 0.017µ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 [147.706µs; 147.771µs] or [-0.022%; +0.022%] None None None

Baseline

Omitted due to size.

@sanchda
Copy link
Contributor

sanchda commented Apr 7, 2025

Not sure about the CI errors, but the PR looks good and improves the message format 🚀

@gleocadie gleocadie force-pushed the dsn/crashtracker-double-stacks branch from 5a33e7f to f7e240e Compare April 24, 2025 11:48
morrisonlevi and others added 20 commits May 22, 2025 14:44
…been swapped (#1042)

This check is not 100% deterministic, but between the time the mock returns the response
and we swap the atomic pointer holding the agent_info we only need to perform
very few operations. We wait for a maximum of 1s before failing the test and that should
give way more time than necesssary.
* build: bump prost-build

This updates prost-build across our crates.

* build: update sidecar's console-subscriber

In order to update prost-types & co after updating prost-build.
We need a `ddcommon/fips` and a `trace_utils/fips` feature. This functionality is written specifically for use in the datadog-lambda-extension. Other use cases should probably validate carefully that the right dependencies are being used in their builds.
#934)

# What does this PR do?

Removes the enum for stable config and defer the responsibility of checking which config params are allowed to the libraries themselves

---

Co-authored-by: paullegranddc <[email protected]>
)

**What does this PR do?**

This PR applies a suggestion from
#963 (comment)
to set the `start_time` after obtaining the old profile.

This will hopefully make it more clear that the `start_time` is used
for the old profile, not the new one.

**Motivation:**

Make code more readable.

**Additional Notes:**

N/A

**How to test the change?**

Existing test coverage should be enough to validate this change
(for instance, the Ruby profiler test suite explicitly tests the
timestamps on profiles).
- The MAX_PAYLOAD_SIZE used in trace_utils::coalesce_send_data() was
  50mb. The agent drops payloads greater than > 25mb and returns a 413.
  So it was potentially combining payloads that would result in an
  error and drop.

- In the sidecar's trace_flusher payloads were being dropped if the
  queue's size exceeded the min drop size. The correct behavior is to
  check if the payload being enqueued exceeds min drop size and log an
  error.

- When the sidecar's trace_flusher was dropping a payload that was too
  large it was still adding that payload's size to the queue size. This
  could have lead to subsequent payloads being dropped due to an incorrectly
  lar ge queue size until a time based flush was done.

- A bug was discovered in the test helper function poll_for_mock_hits()
  where we were incorrectly returning true always when expected hits was
  0.
…eserialization (#992)

# What does this PR do?

This PR adds the following features:
* A public API to send trace chunks through the trace exporter. This function takes a `Vec<Vec<Span<T>>` so we can rapidly iterate in ddtrace-rs on which datastructure we want to use to pass spans
* A public API to wait for the /info endpoint to be ready. This is needed for deterministic tests with the test agent, because otherwise it's possible to not have stats during the first submission
* A way to specify env vars when instantiating an apm test agent. We need to skip some meta keys in dd-trace-rs using the `SNAPSHOT_IGNORED_ATTRS` env, and to recreate the snapshots when running outside of the CI with the `SNAPSHOT_CI` env parameters

# Motivation

Working on integrating the trace-exporter in dd-trace-rs
* Add changes to integrate profiling-ffi by source in other projects.

* Add "lib" to crate-type.
* Fix blazesym version in crashtracker.

* Modify builder to explicitely pass the "crate-type" during compilation.

* Modify build script to explicitely pass the crate-type so to avoid LTO issues.

* Modify window's build scripts to use rustc to avoid LTO issues.
… dispatch (#1061)

# What does this PR do?

Allow to replace the refcounted type used in tinybytes, by using a custom dispatch table for clone a drop
* style: allow clippy::large_enum_variant

* style: fix clippy::double_ended_iterator_last

* style: fix clippy::io_other_error
…ishing (#1067)

**What does this PR do?**

This PR bootstraps a new GitHub workflow to publish the `libdatadog`
Ruby gem directly from CI and using
[trusted publishing](https://guides.rubygems.org/trusted-publishing/).

It's not fully set up completely, as I'm having trouble testing
the authentication part, I suspect because I'm working off a branch
and because the workflow does not yet exist on main.

Note also that I've set up a `publish-ruby` environment in
https://github.com/datadog/libdatadog/settings/environments which
can be used to control who can run this action.

**Motivation:**

Replace our current release approach that requires manually accessing
authentication keys to one that's fully automated and verified.

**Additional Notes:**

N/A

**How to test the change?**

As I said above, this is not yet fully wired up. Also, on purpose
I've disabled the step where we would upload actual packages until
we can fully validate everything is working fine.
@danielsn danielsn requested review from a team as code owners May 22, 2025 18:46
@danielsn danielsn requested review from a team as code owners May 22, 2025 18:46
@danielsn danielsn requested a review from pawelchcki May 22, 2025 18:46
@codecov-commenter
Copy link

codecov-commenter commented May 22, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 70.94%. Comparing base (b04975d) to head (ded14a7).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1005   +/-   ##
=======================================
  Coverage   70.94%   70.94%           
=======================================
  Files         323      323           
  Lines       49501    49498    -3     
=======================================
- Hits        35117    35115    -2     
+ Misses      14384    14383    -1     
Components Coverage Δ
datadog-crashtracker 41.91% <100.00%> (-0.16%) ⬇️
datadog-crashtracker-ffi 6.11% <ø> (ø)
datadog-alloc 98.73% <ø> (ø)
data-pipeline 90.61% <ø> (ø)
data-pipeline-ffi 89.26% <ø> (ø)
ddcommon 80.07% <ø> (ø)
ddcommon-ffi 68.64% <ø> (ø)
ddtelemetry 60.60% <ø> (ø)
ddtelemetry-ffi 21.32% <ø> (ø)
dogstatsd-client 83.26% <ø> (ø)
datadog-ipc 82.58% <ø> (-0.11%) ⬇️
datadog-profiling 77.49% <ø> (ø)
datadog-profiling-ffi 62.12% <ø> (ø)
datadog-sidecar 41.47% <ø> (ø)
datdog-sidecar-ffi 3.79% <ø> (ø)
spawn-worker 55.35% <ø> (ø)
tinybytes 90.96% <ø> (ø)
datadog-trace-normalization 98.24% <ø> (ø)
datadog-trace-obfuscation 94.16% <ø> (ø)
datadog-trace-protobuf 77.10% <ø> (ø)
datadog-trace-utils 89.28% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@r1viollet
Copy link
Contributor

r1viollet commented May 22, 2025

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.03 MB 8.03 MB -0% (-248 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so.debug 20.31 MB 20.30 MB --.01% (-3.04 KB) 💪
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 66.02 MB 66.01 MB --.01% (-9.31 KB) 💪
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so.debug 22.70 MB 22.70 MB --.01% (-2.56 KB) 💪
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 72.62 MB 72.61 MB -0% (-7.36 KB) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 8.00 MB 7.94 MB --.78% (-64.25 KB) 💪
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 16.71 MB 16.71 MB -0% (-1.50 KB) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 62.31 KB 62.31 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 112.65 MB 112.66 MB +0% (+8.00 KB) 👌
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 631.82 MB 631.82 MB -0% (-7.06 KB) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 4.99 MB 4.99 MB --.04% (-2.50 KB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 62.31 KB 62.31 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 15.88 MB 15.88 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 26.43 MB 26.42 MB --.02% (-6.38 KB) 💪
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 14.15 MB 14.15 MB --.01% (-1.50 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 63.26 KB 63.26 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 114.54 MB 114.51 MB --.02% (-24.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 624.40 MB 624.39 MB -0% (-7.10 KB) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 3.78 MB 3.78 MB --.01% (-512 B) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 63.26 KB 63.26 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 16.50 MB 16.49 MB --.04% (-8.00 KB) 💪
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 24.34 MB 24.33 MB --.02% (-6.65 KB) 💪
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 57.50 MB 57.49 MB --.01% (-6.81 KB) 💪
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 8.43 MB 8.42 MB --.04% (-4.21 KB) 💪
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so.debug 18.71 MB 18.70 MB --.01% (-2.24 KB) 💪
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 68.61 MB 68.60 MB --.01% (-7.83 KB) 💪
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 8.43 MB 8.43 MB -0% (-216 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so.debug 20.90 MB 20.89 MB --.01% (-2.57 KB) 💪

@danielsn danielsn enabled auto-merge (squash) May 28, 2025 14:20
@danielsn danielsn merged commit d669f9f into main May 28, 2025
44 checks passed
@danielsn danielsn deleted the dsn/crashtracker-double-stacks branch May 28, 2025 18:33
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.