Cleanup and fix the GeneratePackageVersions#8478
Conversation
|
@codex review |
|
Codex Review: Didn't find any major issues. 🎉 ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
BenchmarksBenchmark execution time: 2026-04-17 17:15:08 Comparing candidate commit d41ac11 in PR branch Found 1 performance improvements and 1 performance regressions! Performance is the same for 25 metrics, 0 unstable metrics, 87 known flaky benchmarks.
|
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8478) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-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:
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 chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8478) - mean (75ms) : 70, 79
master - mean (73ms) : 70, 76
section Bailout
This PR (8478) - mean (78ms) : 75, 82
master - mean (77ms) : 75, 79
section CallTarget+Inlining+NGEN
This PR (8478) - mean (1,077ms) : 1024, 1131
master - mean (1,083ms) : 1033, 1134
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 (8478) - mean (117ms) : 112, 123
master - mean (112ms) : 109, 116
section Bailout
This PR (8478) - mean (116ms) : 112, 120
master - mean (115ms) : 110, 120
section CallTarget+Inlining+NGEN
This PR (8478) - mean (795ms) : 771, 819
master - mean (793ms) : 765, 821
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8478) - mean (102ms) : 97, 108
master - mean (102ms) : 95, 109
section Bailout
This PR (8478) - mean (103ms) : 97, 108
master - mean (101ms) : 98, 104
section CallTarget+Inlining+NGEN
This PR (8478) - mean (941ms) : 910, 973
master - mean (946ms) : 907, 984
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8478) - mean (100ms) : 96, 103
master - mean (103ms) : 97, 110
section Bailout
This PR (8478) - mean (101ms) : 99, 104
master - mean (103ms) : 99, 107
section CallTarget+Inlining+NGEN
This PR (8478) - mean (827ms) : 788, 866
master - mean (829ms) : 790, 868
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 (8478) - mean (209ms) : 203, 216
master - mean (212ms) : 207, 217
section Bailout
This PR (8478) - mean (213ms) : 207, 220
master - mean (215ms) : 212, 219
section CallTarget+Inlining+NGEN
This PR (8478) - mean (1,230ms) : 1163, 1297
master - mean (1,235ms) : 1187, 1283
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 (8478) - mean (302ms) : 294, 310
master - mean (306ms) : 296, 316
section Bailout
This PR (8478) - mean (303ms) : 297, 309
master - mean (305ms) : 299, 311
section CallTarget+Inlining+NGEN
This PR (8478) - mean (1,015ms) : 985, 1044
master - mean (1,018ms) : 990, 1045
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8478) - mean (295ms) : 288, 302
master - mean (300ms) : 292, 308
section Bailout
This PR (8478) - mean (295ms) : 290, 301
master - mean (298ms) : 291, 305
section CallTarget+Inlining+NGEN
This PR (8478) - mean (1,179ms) : 1145, 1214
master - mean (1,176ms) : 1142, 1209
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8478) - mean (296ms) : 290, 302
master - mean (295ms) : 288, 302
section Bailout
This PR (8478) - mean (297ms) : 290, 304
master - mean (297ms) : 292, 303
section CallTarget+Inlining+NGEN
This PR (8478) - mean (1,087ms) : 985, 1190
master - mean (1,079ms) : 992, 1166
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Summary of changes
This goes back through the recent changes (#8371 and #8340) to
GeneratePackageVersionsand attempts to do a few things / fixesReason for change
While working on (#8128) I started running into several issues with
GeneratePackageVersionsnamely that I couldn't getIncludePackagesto work and then I started fighting issues with thenuget_cacheas well when attempting to add a new integration.This sets out to do a few things:
nuget_cache- this was added so that we wouldn't go and query NuGet info for packages not listed in theIncludePackagessupported_versions(this is what I previously used to determine what the highest version was currently allowed) - this file is planned to be changed/modified by another team in the near future hence why we shouldn't use it.nuget_cachebefore so if someone ran it depending on their locale it would change.Implementation details
CooldownModeenum:Normal,BypassCooldown,FreezeIncludePackagesis used is an example)XUnitFileGenerator.LoadExistingVersionsreads the previous.g.csand returnsDictionary<IntegrationName, List<(Framework, Versions)>>.PackageGrouploads this once and exposesTryGetFrozenVersionsnuget_version_cache.jsonandNuGetVersionCache.csIsWithinCooldown→WasPublishedTooRecentlybaseline→previousMaxVersionsApplyCooldownnow uses two named local booleans (publishedTooRecently,atOrBelowPreviousMax) so the drop condition reads positively: "drop the version if it was published too recently and we haven't already shipped against it."Test coverage
I ran it locally for a handful of cases I think it is better.
Other details
I have ran through several instances with this and it seems to be good, basically default runs, runs with configurable cooldowns, runs with
IncludePackagesand runs withExcludePackages. All appeared as expected to me.