You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As part of #8873, I was interested in implementing proper no-oping for deprecation. This is to ensure that redundant API calls do not easily cause many unnecessary V3 catalog leaves and therefore load on the DB.
I did a data investigation with NuGet.Insights to see how often duplicate catalog leaves occurred. It turns out... a lot!
Of catalog leaves with deprecation information, over 15% are duplicate, i.e. their mutable metadata (listed, vulnerabilities, and deprecation) are the same as the previous leaf for that same package.
I believe this is made even worse for users that have access to the deprecation API private preview. It's easy to re-request deprecation of a growing set of versions with the API and cause a growing wave of duplicate deprecations. azure-sdk is at the top of the deprecation list because it is enabled for the deprecation API.
We should implement proper no-oping in PackageDeprecationService. Currently the code updates the LastEdited field on ALL packages in the deprecation batch if there is ANY change (rather than no-oping on a package-by-package basis).
Impact
I'm unable to use NuGet.org
Describe the bug
As part of #8873, I was interested in implementing proper no-oping for deprecation. This is to ensure that redundant API calls do not easily cause many unnecessary V3 catalog leaves and therefore load on the DB.
I did a data investigation with NuGet.Insights to see how often duplicate catalog leaves occurred. It turns out... a lot!
Of catalog leaves with deprecation information, over 15% are duplicate, i.e. their mutable metadata (listed, vulnerabilities, and deprecation) are the same as the previous leaf for that same package.
I believe this is made even worse for users that have access to the deprecation API private preview. It's easy to re-request deprecation of a growing set of versions with the API and cause a growing wave of duplicate deprecations.
azure-sdk
is at the top of the deprecation list because it is enabled for the deprecation API.We should implement proper no-oping in
PackageDeprecationService
. Currently the code updates theLastEdited
field on ALL packages in the deprecation batch if there is ANY change (rather than no-oping on a package-by-package basis).NuGetGallery/src/NuGetGallery/Services/PackageDeprecationService.cs
Lines 103 to 110 in f58a360
Repro Steps
Expected Behavior
Version Z should only have it's
LastEdited
value updated.Actual: X, Y, and Z have their
LastEdited
value updated.Screenshots
No response
Additional Context and logs
No response
The text was updated successfully, but these errors were encountered: