Configure GeneratePackageVersions to support a "cooldown" on dependencies#8371
Configure GeneratePackageVersions to support a "cooldown" on dependencies#8371
GeneratePackageVersions to support a "cooldown" on dependencies#8371Conversation
BenchmarksBenchmark execution time: 2026-03-27 21:03:59 Comparing candidate commit c71f249 in PR branch Found 6 performance improvements and 15 performance regressions! Performance is the same for 249 metrics, 18 unstable metrics.
|
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8371) 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 (8371) - mean (72ms) : 70, 74
master - mean (72ms) : 70, 74
section Bailout
This PR (8371) - mean (76ms) : 74, 79
master - mean (76ms) : 74, 78
section CallTarget+Inlining+NGEN
This PR (8371) - mean (1,080ms) : 1022, 1137
master - mean (1,079ms) : 1035, 1123
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 (8371) - mean (113ms) : 109, 117
master - mean (113ms) : 109, 116
section Bailout
This PR (8371) - mean (114ms) : 111, 117
master - mean (114ms) : 111, 116
section CallTarget+Inlining+NGEN
This PR (8371) - mean (795ms) : 779, 812
master - mean (798ms) : 772, 824
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8371) - mean (99ms) : 96, 102
master - mean (99ms) : 96, 102
section Bailout
This PR (8371) - mean (100ms) : 97, 103
master - mean (100ms) : 98, 103
section CallTarget+Inlining+NGEN
This PR (8371) - mean (788ms) : 768, 808
master - mean (784ms) : 765, 803
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8371) - mean (99ms) : 95, 102
master - mean (99ms) : 95, 102
section Bailout
This PR (8371) - mean (100ms) : 97, 104
master - mean (100ms) : 97, 103
section CallTarget+Inlining+NGEN
This PR (8371) - mean (695ms) : 682, 709
master - mean (691ms) : 666, 716
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 (8371) - mean (218ms) : 203, 233
master - mean (222ms) : 207, 237
section Bailout
This PR (8371) - mean (227ms) : 210, 243
master - mean (225ms) : 210, 240
section CallTarget+Inlining+NGEN
This PR (8371) - mean (1,261ms) : 1212, 1311
master - mean (1,260ms) : 1202, 1317
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 (8371) - mean (316ms) : 302, 330
master - mean (315ms) : 304, 326
section Bailout
This PR (8371) - mean (317ms) : 300, 334
master - mean (315ms) : 303, 327
section CallTarget+Inlining+NGEN
This PR (8371) - mean (1,037ms) : 1005, 1068
master - mean (1,037ms) : 999, 1075
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8371) - mean (312ms) : 291, 333
master - mean (306ms) : 294, 318
section Bailout
This PR (8371) - mean (313ms) : 292, 335
master - mean (306ms) : 295, 318
section CallTarget+Inlining+NGEN
This PR (8371) - mean (1,073ms) : 1012, 1133
master - mean (1,071ms) : 1033, 1109
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8371) - mean (313ms) : 292, 334
master - mean (305ms) : 291, 318
section Bailout
This PR (8371) - mean (308ms) : 287, 328
master - mean (317ms) : 292, 342
section CallTarget+Inlining+NGEN
This PR (8371) - mean (1,041ms) : 977, 1106
master - mean (1,050ms) : 1007, 1094
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
84b9b6e to
545f246
Compare
There was a problem hiding this comment.
Isn't it "Hangfire.Core" and not "Hangfire" I couldn't get it to honor the cooldown as the NuGet name was wrong
| new object[] { string.Empty }, | ||
| #else | ||
| #if NET48 | ||
| new object[] { "1.5.14" }, |
tracer/build/_build/GeneratePackageVersions/NuGetVersionCache.cs
Outdated
Show resolved
Hide resolved
tracer/build/_build/GeneratePackageVersions/NuGetVersionCache.cs
Outdated
Show resolved
Hide resolved
andrewlock
left a comment
There was a problem hiding this comment.
I'm just wondering, would it be easiest to just filter at the source when we load from NuGet? 🤔 and then everything else filters through. I guess you're trying to make it stable, but if we just forced 48 hours always then it would always be stable 🤷♂️ Not worried either way, just a thought 😄
| NugetPackages.Add("Microsoft.VisualStudio.TraceDataCollector", Array.Empty<string>()); | ||
| NugetPackages.Add("Microsoft.TestPlatform.CrossPlatEngine", Array.Empty<string>()); | ||
| NugetPackages.Add("MSTest.TestFramework", Array.Empty<string>()); | ||
| NugetPackages.Add("MSTest.TestFramework", new [] { "MSTest.TestFramework" }); |
There was a problem hiding this comment.
Wait, what are these even for again? 😅 do we need them in the manual instrumentation ones too?
There was a problem hiding this comment.
So the issue is that the ones I had to update here were all getting around as the "name"/"key" for them all comes from various locations and there are several disconnects, probably could do with a refactoring somewhere to make sure the names and keys all are consistent amongst all files somehow
If that answers it
Comes with a 2 day cooldown
c4c28ec to
c71f249
Compare
Summary of changes
Adds a configurable cooldown period to the
GeneratePackageVersionsto support remediation efforts for follow up after #incident-51602.To use supply the optional parameter
--PackageVersionCooldownDays XwhereXis some number of days. The current period is at the moment is going to be 2 days.After running the tool a "cooldown" report is generated, this file will contain packages that we see have a newer version, but will not incorporate into the test, the fallback version that falls within the cooldown period is provided. This file content will show up in the output of future test package version bump PRs.
Note that this is for automated updates, so if it sees something already updated it will honor it.
Here's an example output ran locally with 14 days set:
Reason for change
In #8364 and #incident-51602 all automated dependency updaters to be disabled temporarily, to re-enable we need to supply a 2 day "cooldown" to any version that we update to (in other words the version of the NuGet must be published for at least 2 days before we can update to it).
Implementation details
I made Claude do this 🤖
within cooldown -- no downgrades
Test coverage
I ran
GeneratePackageVersions --PackageVersionCooldownDays 14locally seems good enough IMO (also ran without, with different days etc)Other details
The workflow file (
auto_bump_test_package_versions.yml) will be re-enabled with this PR