[Tests] Skip MySQL and Npgsql tests on database timeouts#8922
Conversation
BenchmarksBenchmark execution time: 2026-07-21 16:22:02 Comparing candidate commit cb7f76d in PR branch Found 0 performance improvements and 2 performance regressions! Performance is the same for 70 metrics, 0 unstable metrics, 59 known flaky benchmarks, 67 flaky benchmarks without significant changes.
|
andrewlock
left a comment
There was a problem hiding this comment.
Good call, thanks! Are there any other database tests you think we should apply this to as well?
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8922) and master.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Bailout | ||||
| duration | 216.75 ± (216.18 - 217.99) ms | 235.66 ± (234.05 - 236.57) ms | +8.7% | ❌⬆️ |
Full Metrics Comparison
FakeDbCommand
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 72.06 ± (72.11 - 72.69) ms | 74.49 ± (74.27 - 74.87) ms | +3.4% | ✅⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 75.27 ± (75.27 - 75.61) ms | 76.59 ± (76.60 - 77.04) ms | +1.8% | ✅⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1084.47 ± (1083.77 - 1090.30) ms | 1088.06 ± (1087.09 - 1093.13) ms | +0.3% | ✅⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 22.23 ± (22.19 - 22.28) ms | 22.41 ± (22.36 - 22.46) ms | +0.8% | ✅⬆️ |
| process.time_to_main_ms | 82.51 ± (82.27 - 82.76) ms | 84.01 ± (83.69 - 84.33) ms | +1.8% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.01 ± (11.00 - 11.01) MB | 10.99 ± (10.99 - 11.00) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 12 ± (12 - 12) | 12 ± (12 - 12) | +0.0% | ✅ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 21.93 ± (21.91 - 21.95) ms | 22.19 ± (22.16 - 22.21) ms | +1.2% | ✅⬆️ |
| process.time_to_main_ms | 82.84 ± (82.64 - 83.05) ms | 82.78 ± (82.62 - 82.93) ms | -0.1% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.05 ± (11.04 - 11.05) MB | 11.03 ± (11.03 - 11.04) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 13 ± (13 - 13) | 13 ± (13 - 13) | +0.0% | ✅ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 209.86 ± (209.07 - 210.64) ms | 210.89 ± (210.16 - 211.62) ms | +0.5% | ✅⬆️ |
| process.time_to_main_ms | 539.56 ± (538.28 - 540.84) ms | 540.28 ± (539.12 - 541.45) ms | +0.1% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 49.50 ± (49.47 - 49.53) MB | 49.51 ± (49.48 - 49.54) MB | +0.0% | ✅⬆️ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | -0.1% | ✅ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 21.20 ± (21.15 - 21.25) ms | 20.98 ± (20.95 - 21.01) ms | -1.0% | ✅ |
| process.time_to_main_ms | 74.21 ± (73.92 - 74.49) ms | 71.42 ± (71.27 - 71.58) ms | -3.8% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.75 ± (10.75 - 10.75) MB | 10.75 ± (10.74 - 10.75) MB | -0.0% | ✅ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 20.76 ± (20.73 - 20.78) ms | 20.90 ± (20.87 - 20.93) ms | +0.7% | ✅⬆️ |
| process.time_to_main_ms | 72.32 ± (72.16 - 72.47) ms | 72.61 ± (72.47 - 72.75) ms | +0.4% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 10.86 ± (10.86 - 10.87) MB | 10.85 ± (10.85 - 10.85) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 372.53 ± (370.72 - 374.35) ms | 371.36 ± (369.33 - 373.39) ms | -0.3% | ✅ |
| process.time_to_main_ms | 543.23 ± (541.95 - 544.50) ms | 547.91 ± (546.62 - 549.20) ms | +0.9% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 50.56 ± (50.54 - 50.58) MB | 50.53 ± (50.51 - 50.55) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | +0.1% | ✅⬆️ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 19.10 ± (19.07 - 19.12) ms | 19.45 ± (19.39 - 19.51) ms | +1.9% | ✅⬆️ |
| process.time_to_main_ms | 70.32 ± (70.16 - 70.48) ms | 74.65 ± (74.28 - 75.02) ms | +6.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 7.75 ± (7.75 - 7.75) MB | 7.77 ± (7.77 - 7.78) MB | +0.3% | ✅⬆️ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 19.32 ± (19.28 - 19.37) ms | 19.19 ± (19.16 - 19.22) ms | -0.7% | ✅ |
| process.time_to_main_ms | 74.77 ± (74.50 - 75.04) ms | 72.68 ± (72.51 - 72.85) ms | -2.8% | ✅ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 7.81 ± (7.81 - 7.82) MB | 7.83 ± (7.82 - 7.83) MB | +0.2% | ✅⬆️ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 298.39 ± (296.29 - 300.50) ms | 298.28 ± (295.67 - 300.89) ms | -0.0% | ✅ |
| process.time_to_main_ms | 491.24 ± (490.26 - 492.23) ms | 494.71 ± (493.46 - 495.96) ms | +0.7% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 37.96 ± (37.93 - 37.98) MB | 38.04 ± (38.02 - 38.06) MB | +0.2% | ✅⬆️ |
| runtime.dotnet.threads.count | 27 ± (27 - 27) | 27 ± (27 - 27) | +0.1% | ✅⬆️ |
HttpMessageHandler
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 208.70 ± (208.98 - 210.34) ms | 218.14 ± (218.53 - 220.38) ms | +4.5% | ✅⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 216.75 ± (216.18 - 217.99) ms | 235.66 ± (234.05 - 236.57) ms | +8.7% | ❌⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1242.60 ± (1244.23 - 1252.82) ms | 1272.85 ± (1273.06 - 1282.31) ms | +2.4% | ✅⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 200.51 ± (199.90 - 201.11) ms | 225.95 ± (224.63 - 227.27) ms | +12.7% | ✅⬆️ |
| process.time_to_main_ms | 86.92 ± (86.66 - 87.17) ms | 93.93 ± (93.46 - 94.40) ms | +8.1% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.11 ± (16.09 - 16.12) MB | 16.01 ± (15.99 - 16.02) MB | -0.6% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 20) | 20 ± (20 - 20) | +0.8% | ✅⬆️ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 202.61 ± (201.85 - 203.36) ms | 216.51 ± (215.32 - 217.70) ms | +6.9% | ✅⬆️ |
| process.time_to_main_ms | 89.18 ± (88.93 - 89.43) ms | 92.79 ± (92.41 - 93.17) ms | +4.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.11 ± (16.09 - 16.12) MB | 16.10 ± (16.08 - 16.11) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 21 ± (21 - 21) | 21 ± (21 - 21) | +0.8% | ✅⬆️ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 393.13 ± (391.74 - 394.52) ms | 411.85 ± (410.26 - 413.44) ms | +4.8% | ✅⬆️ |
| process.time_to_main_ms | 557.31 ± (555.88 - 558.75) ms | 575.98 ± (574.56 - 577.41) ms | +3.3% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 59.48 ± (59.31 - 59.66) MB | 59.96 ± (59.91 - 60.00) MB | +0.8% | ✅⬆️ |
| runtime.dotnet.threads.count | 30 ± (30 - 30) | 30 ± (30 - 30) | +0.8% | ✅⬆️ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 209.50 ± (208.63 - 210.37) ms | 224.83 ± (223.32 - 226.33) ms | +7.3% | ✅⬆️ |
| process.time_to_main_ms | 76.74 ± (76.51 - 76.97) ms | 80.30 ± (79.95 - 80.65) ms | +4.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.40 ± (16.38 - 16.41) MB | 16.30 ± (16.28 - 16.32) MB | -0.6% | ✅ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 19 ± (19 - 20) | +0.6% | ✅⬆️ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 210.97 ± (210.06 - 211.88) ms | 238.65 ± (237.37 - 239.93) ms | +13.1% | ✅⬆️ |
| process.time_to_main_ms | 78.42 ± (78.18 - 78.65) ms | 83.30 ± (82.90 - 83.69) ms | +6.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.47 ± (16.45 - 16.48) MB | 16.31 ± (16.30 - 16.33) MB | -0.9% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 21) | 21 ± (20 - 21) | +0.1% | ✅⬆️ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 583.41 ± (580.37 - 586.45) ms | 585.37 ± (582.10 - 588.64) ms | +0.3% | ✅⬆️ |
| process.time_to_main_ms | 568.02 ± (566.86 - 569.19) ms | 579.96 ± (578.67 - 581.25) ms | +2.1% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 61.60 ± (61.51 - 61.68) MB | 61.72 ± (61.62 - 61.81) MB | +0.2% | ✅⬆️ |
| runtime.dotnet.threads.count | 31 ± (31 - 31) | 31 ± (31 - 31) | +0.1% | ✅⬆️ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 206.02 ± (205.33 - 206.71) ms | 219.29 ± (217.82 - 220.76) ms | +6.4% | ✅⬆️ |
| process.time_to_main_ms | 75.64 ± (75.45 - 75.84) ms | 78.64 ± (78.26 - 79.02) ms | +4.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.73 ± (11.72 - 11.75) MB | 11.67 ± (11.65 - 11.69) MB | -0.6% | ✅ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 19 ± (19 - 19) | +0.1% | ✅⬆️ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 205.57 ± (204.85 - 206.30) ms | 221.94 ± (220.76 - 223.12) ms | +8.0% | ✅⬆️ |
| process.time_to_main_ms | 76.93 ± (76.74 - 77.12) ms | 79.79 ± (79.48 - 80.10) ms | +3.7% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 11.76 ± (11.75 - 11.78) MB | 11.69 ± (11.67 - 11.70) MB | -0.6% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 20) | 20 ± (20 - 20) | +1.2% | ✅⬆️ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 530.32 ± (523.80 - 536.85) ms | 596.04 ± (589.77 - 602.31) ms | +12.4% | ✅⬆️ |
| process.time_to_main_ms | 520.24 ± (519.18 - 521.29) ms | 526.73 ± (525.64 - 527.82) ms | +1.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 51.51 ± (51.44 - 51.58) MB | 52.11 ± (52.02 - 52.20) MB | +1.2% | ✅⬆️ |
| runtime.dotnet.threads.count | 30 ± (30 - 30) | 30 ± (30 - 30) | +1.0% | ✅⬆️ |
Comparison explanation
Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
- Welch test with statistical test for significance of 5%
- Only results indicating a difference greater than 5% and 5 ms are considered.
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.
Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).
Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8922) - mean (75ms) : 70, 79
master - mean (72ms) : 68, 77
section Bailout
This PR (8922) - mean (77ms) : 74, 80
master - mean (75ms) : 74, 77
section CallTarget+Inlining+NGEN
This PR (8922) - mean (1,090ms) : 1047, 1133
master - mean (1,087ms) : 1039, 1135
FakeDbCommand (.NET Core 3.1)
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8922) - mean (114ms) : 106, 121
master - mean (112ms) : 106, 117
section Bailout
This PR (8922) - mean (111ms) : 110, 113
master - mean (111ms) : 109, 113
section CallTarget+Inlining+NGEN
This PR (8922) - mean (789ms) : 767, 811
master - mean (787ms) : 760, 815
FakeDbCommand (.NET 6)
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8922) - mean (98ms) : 96, 101
master - mean (102ms) : 97, 108
section Bailout
This PR (8922) - mean (99ms) : 98, 101
master - mean (99ms) : 96, 102
section CallTarget+Inlining+NGEN
This PR (8922) - mean (952ms) : 913, 990
master - mean (945ms) : 912, 978
FakeDbCommand (.NET 8)
gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8922) - mean (103ms) : 97, 108
master - mean (96ms) : 92, 100
section Bailout
This PR (8922) - mean (100ms) : 95, 105
master - mean (102ms) : 97, 107
section CallTarget+Inlining+NGEN
This PR (8922) - mean (822ms) : 782, 863
master - mean (820ms) : 780, 860
HttpMessageHandler (.NET Framework 4.8)
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8922) - mean (219ms) : 206, 233
master - mean (210ms) : 200, 219
section Bailout
This PR (8922) - mean (235ms) : crit, 216, 255
master - mean (217ms) : 204, 231
section CallTarget+Inlining+NGEN
This PR (8922) - mean (1,278ms) : 1207, 1348
master - mean (1,249ms) : 1185, 1312
HttpMessageHandler (.NET Core 3.1)
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8922) - mean (332ms) : 314, 349
master - mean (298ms) : 285, 311
section Bailout
This PR (8922) - mean (320ms) : 298, 341
master - mean (302ms) : 286, 319
section CallTarget+Inlining+NGEN
This PR (8922) - mean (1,028ms) : 980, 1075
master - mean (993ms) : 962, 1023
HttpMessageHandler (.NET 6)
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8922) - mean (315ms) : 286, 343
master - mean (296ms) : 280, 311
section Bailout
This PR (8922) - mean (332ms) : crit, 310, 354
master - mean (299ms) : 280, 318
section CallTarget+Inlining+NGEN
This PR (8922) - mean (1,199ms) : 1145, 1253
master - mean (1,185ms) : 1135, 1235
HttpMessageHandler (.NET 8)
gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8922) - mean (310ms) : 284, 336
master - mean (294ms) : 282, 305
section Bailout
This PR (8922) - mean (313ms) : crit, 290, 337
master - mean (294ms) : 280, 308
section CallTarget+Inlining+NGEN
This PR (8922) - mean (1,156ms) : crit, 1064, 1248
master - mean (1,088ms) : 983, 1193
I just applied the changes to tests that failed. Potentially, we could do it also for: |
I don't have a strong feeling either way - if they haven't flaked yet, we can just bear it in mind I guess 🙂 |
Summary of changes
Skip the MySqlConnector and Npgsql disabled-integration tests when the database dependency times out.
Reason for change
Avoid transient CI failures caused by database connection timeouts
Implementation details
Test coverage