diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 0852ee929424..0adbf769d943 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -7,95 +7,98 @@ This file should be imported by eng/Versions.props
- 10.0.0-rc.1.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-beta.25377.103
- 10.0.0-beta.25377.103
- 10.0.0-beta.25377.103
- 10.0.0-beta.25377.103
- 10.0.0-beta.25377.103
- 10.0.0-beta.25377.103
- 10.0.0-beta.25377.103
- 10.0.0-rc.1.25377.103
- 10.0.0-rc.1.25377.103
- 10.0.0-rc.1.25377.103
- 10.0.0-rc.1.25377.103
- 10.0.0-rc.1.25377.103
- 10.0.0-rc.1.25377.103
- 10.0.0-rc.1.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 3.2.0-preview.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
- 10.0.0-preview.7.25377.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-beta.25409.103
+ 10.0.0-beta.25409.103
+ 10.0.0-beta.25409.103
+ 10.0.0-beta.25409.103
+ 10.0.0-beta.25409.103
+ 10.0.0-beta.25409.103
+ 10.0.0-beta.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 3.2.0-preview.25409.103
+ 7.0.0-preview.1.603
+ 7.0.0-preview.1.603
+ 7.0.0-preview.1.603
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
+ 10.0.0-rc.1.25409.103
4.13.0-3.24613.7
4.13.0-3.24613.7
@@ -116,10 +119,6 @@ This file should be imported by eng/Versions.props
17.12.36
17.12.36
17.12.36
-
- 6.2.4
- 6.2.4
- 6.2.4
@@ -185,6 +184,9 @@ This file should be imported by eng/Versions.props
$(MicrosoftNETCoreBrowserDebugHostTransportPackageVersion)
$(MicrosoftNETCorePlatformsPackageVersion)
$(MicrosoftWebXdtPackageVersion)
+ $(NuGetFrameworksPackageVersion)
+ $(NuGetPackagingPackageVersion)
+ $(NuGetVersioningPackageVersion)
$(SystemCollectionsImmutablePackageVersion)
$(SystemCompositionPackageVersion)
$(SystemConfigurationConfigurationManagerPackageVersion)
@@ -233,9 +235,5 @@ This file should be imported by eng/Versions.props
$(MicrosoftBuildFrameworkPackageVersion)
$(MicrosoftBuildTasksCorePackageVersion)
$(MicrosoftBuildUtilitiesCorePackageVersion)
-
- $(NuGetFrameworksPackageVersion)
- $(NuGetPackagingPackageVersion)
- $(NuGetVersioningPackageVersion)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index b4b82aa78905..9196dfc49244 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -8,333 +8,333 @@
See https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md for instructions on using darc.
-->
-
+
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
@@ -358,37 +358,37 @@
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
-
+
https://github.com/dotnet/dotnet
- 6a953e76162f3f079405f80e28664fa51b136740
+ e9f665e52848a3615736c099e5631af531b66a5c
https://github.com/dotnet/extensions
@@ -440,17 +440,17 @@
https://github.com/dotnet/msbuild
d1cce8d7cc03c23a4f1bad8e9240714fd9d199a3
-
- https://github.com/nuget/nuget.client
- 8fef55f5a55a3b4f2c96cd1a9b5ddc51d4b927f8
+
+ https://github.com/dotnet/dotnet
+ e9f665e52848a3615736c099e5631af531b66a5c
-
- https://github.com/nuget/nuget.client
- 8fef55f5a55a3b4f2c96cd1a9b5ddc51d4b927f8
+
+ https://github.com/dotnet/dotnet
+ e9f665e52848a3615736c099e5631af531b66a5c
-
- https://github.com/nuget/nuget.client
- 8fef55f5a55a3b4f2c96cd1a9b5ddc51d4b927f8
+
+ https://github.com/dotnet/dotnet
+ e9f665e52848a3615736c099e5631af531b66a5c
diff --git a/eng/common/core-templates/job/onelocbuild.yml b/eng/common/core-templates/job/onelocbuild.yml
index 8034815f4213..8bf7d23355bc 100644
--- a/eng/common/core-templates/job/onelocbuild.yml
+++ b/eng/common/core-templates/job/onelocbuild.yml
@@ -4,7 +4,7 @@ parameters:
# Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool
pool: ''
-
+
CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex
GithubPat: $(BotAccount-dotnet-bot-repo-PAT)
@@ -27,7 +27,7 @@ parameters:
is1ESPipeline: ''
jobs:
- job: OneLocBuild${{ parameters.JobNameSuffix }}
-
+
dependsOn: ${{ parameters.dependsOn }}
displayName: OneLocBuild${{ parameters.JobNameSuffix }}
@@ -99,22 +99,20 @@ jobs:
mirrorBranch: ${{ parameters.MirrorBranch }}
condition: ${{ parameters.condition }}
- - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
- parameters:
- is1ESPipeline: ${{ parameters.is1ESPipeline }}
- args:
- displayName: Publish Localization Files
- pathToPublish: '$(Build.ArtifactStagingDirectory)/loc'
- publishLocation: Container
- artifactName: Loc
- condition: ${{ parameters.condition }}
+ # Copy the locProject.json to the root of the Loc directory, then publish a pipeline artifact
+ - task: CopyFiles@2
+ displayName: Copy LocProject.json
+ inputs:
+ SourceFolder: '$(Build.SourcesDirectory)/eng/Localize/'
+ Contents: 'LocProject.json'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/loc'
+ condition: ${{ parameters.condition }}
- - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+ - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
- displayName: Publish LocProject.json
- pathToPublish: '$(Build.SourcesDirectory)/eng/Localize/'
- publishLocation: Container
- artifactName: Loc
+ targetPath: '$(Build.ArtifactStagingDirectory)/loc'
+ artifactName: 'Loc'
+ displayName: 'Publish Localization Files'
condition: ${{ parameters.condition }}
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 996a5f9c8725..d4cfd9ccd806 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -257,7 +257,20 @@ function Retry($downloadBlock, $maxRetries = 5) {
function GetDotNetInstallScript([string] $dotnetRoot) {
$installScript = Join-Path $dotnetRoot 'dotnet-install.ps1'
+ $shouldDownload = $false
+
if (!(Test-Path $installScript)) {
+ $shouldDownload = $true
+ } else {
+ # Check if the script is older than 30 days
+ $fileAge = (Get-Date) - (Get-Item $installScript).LastWriteTime
+ if ($fileAge.Days -gt 30) {
+ Write-Host "Existing install script is too old, re-downloading..."
+ $shouldDownload = $true
+ }
+ }
+
+ if ($shouldDownload) {
Create-Directory $dotnetRoot
$ProgressPreference = 'SilentlyContinue' # Don't display the console progress UI - it's a huge perf hit
$uri = "https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.ps1"
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 3def02a638d2..c1841c9dfd0f 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -300,8 +300,29 @@ function GetDotNetInstallScript {
local root=$1
local install_script="$root/dotnet-install.sh"
local install_script_url="https://builds.dotnet.microsoft.com/dotnet/scripts/$dotnetInstallScriptVersion/dotnet-install.sh"
+ local timestamp_file="$root/.dotnet-install.timestamp"
+ local should_download=false
if [[ ! -a "$install_script" ]]; then
+ should_download=true
+ elif [[ -f "$timestamp_file" ]]; then
+ # Check if the script is older than 30 days using timestamp file
+ local download_time=$(cat "$timestamp_file" 2>/dev/null || echo "0")
+ local current_time=$(date +%s)
+ local age_seconds=$((current_time - download_time))
+
+ # 30 days = 30 * 24 * 60 * 60 = 2592000 seconds
+ if [[ $age_seconds -gt 2592000 ]]; then
+ echo "Existing install script is too old, re-downloading..."
+ should_download=true
+ fi
+ else
+ # No timestamp file exists, assume script is old and re-download
+ echo "No timestamp found for existing install script, re-downloading..."
+ should_download=true
+ fi
+
+ if [[ "$should_download" == true ]]; then
mkdir -p "$root"
echo "Downloading '$install_script_url'"
@@ -328,6 +349,9 @@ function GetDotNetInstallScript {
ExitWithExitCode $exit_code
}
fi
+
+ # Create timestamp file to track download time in seconds from epoch
+ date +%s > "$timestamp_file"
fi
# return value
_GetDotNetInstallScript="$install_script"
diff --git a/eng/targets/CSharp.Common.targets b/eng/targets/CSharp.Common.targets
index 6b6a41ca4a64..471a470911ee 100644
--- a/eng/targets/CSharp.Common.targets
+++ b/eng/targets/CSharp.Common.targets
@@ -94,7 +94,12 @@
<_Parameter2>$(RepositoryUrl)/tree/$(SourceRevisionId)
-
+
+ <_Parameter1>OriginalRepoCommitHash
+ <_Parameter2>$(RepoOriginalSourceRevisionId)
+
+
+
<_Parameter1>Serviceable
<_Parameter2>True
diff --git a/eng/targets/Wix.Common.targets b/eng/targets/Wix.Common.targets
index 72cec114582b..e159100ea531 100644
--- a/eng/targets/Wix.Common.targets
+++ b/eng/targets/Wix.Common.targets
@@ -22,7 +22,7 @@
<_GeneratedPackageVersion>$(PackageVersion)
<_GeneratedPackageVersion
- Condition="! $(PackageVersion.Contains('$(_PreReleaseLabel)'))">$(PackageVersion)-$(_PreReleaseLabel)$(_BuildNumberLabels)
+ Condition="! $(PackageVersion.Contains('$(_BuildNumberLabels)'))">$(VersionPrefix)-$(_PreReleaseLabel)$(_BuildNumberLabels)
$(OutputNamePrefix)$(_GeneratedPackageVersion)$(OutputNameSuffix)
diff --git a/global.json b/global.json
index 19f5826c86f4..7139f0292ab4 100644
--- a/global.json
+++ b/global.json
@@ -1,9 +1,9 @@
{
"sdk": {
- "version": "10.0.100-preview.7.25322.101"
+ "version": "10.0.100-preview.7.25372.107"
},
"tools": {
- "dotnet": "10.0.100-preview.7.25322.101",
+ "dotnet": "10.0.100-preview.7.25372.107",
"runtimes": {
"dotnet/x86": [
"$(MicrosoftInternalRuntimeAspNetCoreTransportVersion)"
@@ -27,9 +27,9 @@
"jdk": "latest"
},
"msbuild-sdks": {
- "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25377.103",
- "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25377.103",
- "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25377.103",
+ "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25409.103",
+ "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25409.103",
+ "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25409.103",
"Microsoft.Build.NoTargets": "3.7.0",
"Microsoft.Build.Traversal": "3.4.0"
}
diff --git a/src/Components/WebAssembly/testassets/CustomBasePathApp/CustomBasePathApp.csproj b/src/Components/WebAssembly/testassets/CustomBasePathApp/CustomBasePathApp.csproj
index 64512155abe0..227013061d9a 100644
--- a/src/Components/WebAssembly/testassets/CustomBasePathApp/CustomBasePathApp.csproj
+++ b/src/Components/WebAssembly/testassets/CustomBasePathApp/CustomBasePathApp.csproj
@@ -2,6 +2,7 @@
$(DefaultNetCoreTargetFramework)
+ false
/app
diff --git a/src/Components/WebAssembly/testassets/HostedInAspNet.Client/HostedInAspNet.Client.csproj b/src/Components/WebAssembly/testassets/HostedInAspNet.Client/HostedInAspNet.Client.csproj
index c43a347a6150..382d39138d8c 100644
--- a/src/Components/WebAssembly/testassets/HostedInAspNet.Client/HostedInAspNet.Client.csproj
+++ b/src/Components/WebAssembly/testassets/HostedInAspNet.Client/HostedInAspNet.Client.csproj
@@ -2,6 +2,7 @@
$(DefaultNetCoreTargetFramework)
+ false
diff --git a/src/Components/test/testassets/Components.WasmMinimal/Components.WasmMinimal.csproj b/src/Components/test/testassets/Components.WasmMinimal/Components.WasmMinimal.csproj
index deabcd7fccae..5cd17cfac619 100644
--- a/src/Components/test/testassets/Components.WasmMinimal/Components.WasmMinimal.csproj
+++ b/src/Components/test/testassets/Components.WasmMinimal/Components.WasmMinimal.csproj
@@ -6,6 +6,7 @@
enable
WasmMinimal
true
+ false
diff --git a/src/Components/test/testassets/GlobalizationWasmApp/wwwroot/index.html b/src/Components/test/testassets/GlobalizationWasmApp/wwwroot/index.html
index a9345d1495c5..7201ad0e358b 100644
--- a/src/Components/test/testassets/GlobalizationWasmApp/wwwroot/index.html
+++ b/src/Components/test/testassets/GlobalizationWasmApp/wwwroot/index.html
@@ -1,5 +1,6 @@
+
diff --git a/src/Servers/Connections.Abstractions/src/IMemoryPoolFactory.cs b/src/Servers/Connections.Abstractions/src/IMemoryPoolFactory.cs
index 1cfa7e7f9215..16ffcee42687 100644
--- a/src/Servers/Connections.Abstractions/src/IMemoryPoolFactory.cs
+++ b/src/Servers/Connections.Abstractions/src/IMemoryPoolFactory.cs
@@ -13,7 +13,6 @@ public interface IMemoryPoolFactory
///
/// Creates a new instance of a memory pool.
///
- /// Options for configuring the memory pool.
/// A new memory pool instance.
- MemoryPool Create(MemoryPoolOptions? options = null);
+ MemoryPool Create();
}
diff --git a/src/Servers/Connections.Abstractions/src/MemoryPoolOptions.cs b/src/Servers/Connections.Abstractions/src/MemoryPoolOptions.cs
deleted file mode 100644
index 7d966729a6d1..000000000000
--- a/src/Servers/Connections.Abstractions/src/MemoryPoolOptions.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-namespace Microsoft.AspNetCore.Connections;
-
-///
-/// Options for configuring a memory pool.
-///
-public class MemoryPoolOptions
-{
- ///
- /// Gets or sets the owner of the memory pool. This is used for logging and diagnostics purposes.
- ///
- public string? Owner { get; set; }
-}
diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/net10.0/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/net10.0/PublicAPI.Unshipped.txt
index 4e96c215b0ab..dec7f8f71c13 100644
--- a/src/Servers/Connections.Abstractions/src/PublicAPI/net10.0/PublicAPI.Unshipped.txt
+++ b/src/Servers/Connections.Abstractions/src/PublicAPI/net10.0/PublicAPI.Unshipped.txt
@@ -1,7 +1,3 @@
#nullable enable
Microsoft.AspNetCore.Connections.IMemoryPoolFactory
-Microsoft.AspNetCore.Connections.IMemoryPoolFactory.Create(Microsoft.AspNetCore.Connections.MemoryPoolOptions? options = null) -> System.Buffers.MemoryPool!
-Microsoft.AspNetCore.Connections.MemoryPoolOptions
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.MemoryPoolOptions() -> void
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.Owner.get -> string?
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.Owner.set -> void
+Microsoft.AspNetCore.Connections.IMemoryPoolFactory.Create() -> System.Buffers.MemoryPool!
diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Unshipped.txt
index 4e96c215b0ab..dec7f8f71c13 100644
--- a/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Unshipped.txt
+++ b/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Unshipped.txt
@@ -1,7 +1,3 @@
#nullable enable
Microsoft.AspNetCore.Connections.IMemoryPoolFactory
-Microsoft.AspNetCore.Connections.IMemoryPoolFactory.Create(Microsoft.AspNetCore.Connections.MemoryPoolOptions? options = null) -> System.Buffers.MemoryPool!
-Microsoft.AspNetCore.Connections.MemoryPoolOptions
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.MemoryPoolOptions() -> void
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.Owner.get -> string?
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.Owner.set -> void
+Microsoft.AspNetCore.Connections.IMemoryPoolFactory.Create() -> System.Buffers.MemoryPool!
diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt
index 4e96c215b0ab..dec7f8f71c13 100644
--- a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt
+++ b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt
@@ -1,7 +1,3 @@
#nullable enable
Microsoft.AspNetCore.Connections.IMemoryPoolFactory
-Microsoft.AspNetCore.Connections.IMemoryPoolFactory.Create(Microsoft.AspNetCore.Connections.MemoryPoolOptions? options = null) -> System.Buffers.MemoryPool!
-Microsoft.AspNetCore.Connections.MemoryPoolOptions
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.MemoryPoolOptions() -> void
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.Owner.get -> string?
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.Owner.set -> void
+Microsoft.AspNetCore.Connections.IMemoryPoolFactory.Create() -> System.Buffers.MemoryPool!
diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Unshipped.txt
index 4e96c215b0ab..dec7f8f71c13 100644
--- a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Unshipped.txt
+++ b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Unshipped.txt
@@ -1,7 +1,3 @@
#nullable enable
Microsoft.AspNetCore.Connections.IMemoryPoolFactory
-Microsoft.AspNetCore.Connections.IMemoryPoolFactory.Create(Microsoft.AspNetCore.Connections.MemoryPoolOptions? options = null) -> System.Buffers.MemoryPool!
-Microsoft.AspNetCore.Connections.MemoryPoolOptions
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.MemoryPoolOptions() -> void
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.Owner.get -> string?
-Microsoft.AspNetCore.Connections.MemoryPoolOptions.Owner.set -> void
+Microsoft.AspNetCore.Connections.IMemoryPoolFactory.Create() -> System.Buffers.MemoryPool!
diff --git a/src/Servers/HttpSys/src/HttpSysListener.cs b/src/Servers/HttpSys/src/HttpSysListener.cs
index 2aa28395b78e..ee9d9c081d6d 100644
--- a/src/Servers/HttpSys/src/HttpSysListener.cs
+++ b/src/Servers/HttpSys/src/HttpSysListener.cs
@@ -55,7 +55,7 @@ public HttpSysListener(HttpSysOptions options, IMemoryPoolFactory memoryPo
throw new PlatformNotSupportedException();
}
- MemoryPool = memoryPoolFactory.Create(new MemoryPoolOptions { Owner = "httpsys" });
+ MemoryPool = memoryPoolFactory.Create();
Options = options;
diff --git a/src/Servers/IIS/IIS/src/Core/IISHttpServer.cs b/src/Servers/IIS/IIS/src/Core/IISHttpServer.cs
index d0309104680f..df0484310b0e 100644
--- a/src/Servers/IIS/IIS/src/Core/IISHttpServer.cs
+++ b/src/Servers/IIS/IIS/src/Core/IISHttpServer.cs
@@ -66,7 +66,7 @@ public IISHttpServer(
ILogger logger
)
{
- _memoryPool = memoryPoolFactory.Create(new MemoryPoolOptions { Owner = "iis" });
+ _memoryPool = memoryPoolFactory.Create();
_nativeApplication = nativeApplication;
_applicationLifetime = applicationLifetime;
_logger = logger;
diff --git a/src/Servers/IIS/IIS/src/WebHostBuilderIISExtensions.cs b/src/Servers/IIS/IIS/src/WebHostBuilderIISExtensions.cs
index 44c1094a8a01..b151931e0ae6 100644
--- a/src/Servers/IIS/IIS/src/WebHostBuilderIISExtensions.cs
+++ b/src/Servers/IIS/IIS/src/WebHostBuilderIISExtensions.cs
@@ -57,7 +57,6 @@ public static IWebHostBuilder UseIIS(this IWebHostBuilder hostBuilder)
);
services.TryAddSingleton, DefaultMemoryPoolFactory>();
- services.TryAddSingleton();
});
}
diff --git a/src/Servers/Kestrel/Core/src/Internal/PinnedBlockMemoryPoolFactory.cs b/src/Servers/Kestrel/Core/src/Internal/PinnedBlockMemoryPoolFactory.cs
index 777c7aa611df..45870ab6c23f 100644
--- a/src/Servers/Kestrel/Core/src/Internal/PinnedBlockMemoryPoolFactory.cs
+++ b/src/Servers/Kestrel/Core/src/Internal/PinnedBlockMemoryPoolFactory.cs
@@ -3,6 +3,7 @@
using System.Buffers;
using System.Collections.Concurrent;
+using System.Diagnostics.Metrics;
using Microsoft.AspNetCore.Connections;
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure;
using Microsoft.Extensions.Logging;
@@ -11,22 +12,22 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal;
internal sealed class PinnedBlockMemoryPoolFactory : IMemoryPoolFactory, IHeartbeatHandler
{
- private readonly MemoryPoolMetrics _metrics;
+ private readonly IMeterFactory _meterFactory;
private readonly ILogger? _logger;
private readonly TimeProvider _timeProvider;
// micro-optimization: Using nuint as the value type to avoid GC write barriers; could replace with ConcurrentHashSet if that becomes available
private readonly ConcurrentDictionary _pools = new();
- public PinnedBlockMemoryPoolFactory(MemoryPoolMetrics metrics, TimeProvider? timeProvider = null, ILogger? logger = null)
+ public PinnedBlockMemoryPoolFactory(IMeterFactory meterFactory, TimeProvider? timeProvider = null, ILogger? logger = null)
{
_timeProvider = timeProvider ?? TimeProvider.System;
- _metrics = metrics;
+ _meterFactory = meterFactory;
_logger = logger;
}
- public MemoryPool Create(MemoryPoolOptions? options = null)
+ public MemoryPool Create()
{
- var pool = new PinnedBlockMemoryPool(options?.Owner, _metrics, _logger);
+ var pool = new PinnedBlockMemoryPool(_meterFactory, _logger);
_pools.TryAdd(pool, nuint.Zero);
diff --git a/src/Servers/Kestrel/Core/test/PinnedBlockMemoryPoolFactoryTests.cs b/src/Servers/Kestrel/Core/test/PinnedBlockMemoryPoolFactoryTests.cs
index 7ca077aeff26..4d23015459eb 100644
--- a/src/Servers/Kestrel/Core/test/PinnedBlockMemoryPoolFactoryTests.cs
+++ b/src/Servers/Kestrel/Core/test/PinnedBlockMemoryPoolFactoryTests.cs
@@ -4,7 +4,6 @@
using System.Buffers;
using System.Collections.Concurrent;
using System.Reflection;
-using Microsoft.AspNetCore.Connections;
using Microsoft.AspNetCore.InternalTesting;
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal;
using Microsoft.Extensions.Time.Testing;
@@ -16,26 +15,16 @@ public class PinnedBlockMemoryPoolFactoryTests
[Fact]
public void CreatePool()
{
- var factory = CreateMemoryPoolFactory();
+ var factory = new PinnedBlockMemoryPoolFactory(new TestMeterFactory());
var pool = factory.Create();
Assert.NotNull(pool);
Assert.IsType(pool);
- Assert.Null(Assert.IsType(pool).Owner);
- }
-
- [Fact]
- public void CreatePoolWithOwner()
- {
- var factory = CreateMemoryPoolFactory();
- var pool = factory.Create(new MemoryPoolOptions { Owner = "test" });
- Assert.NotNull(pool);
- Assert.Equal("test", Assert.IsType(pool).Owner);
}
[Fact]
public void CreateMultiplePools()
{
- var factory = CreateMemoryPoolFactory();
+ var factory = new PinnedBlockMemoryPoolFactory(new TestMeterFactory());
var pool1 = factory.Create();
var pool2 = factory.Create();
@@ -47,7 +36,7 @@ public void CreateMultiplePools()
[Fact]
public void DisposePoolRemovesFromFactory()
{
- var factory = CreateMemoryPoolFactory();
+ var factory = new PinnedBlockMemoryPoolFactory(new TestMeterFactory());
var pool = factory.Create();
Assert.NotNull(pool);
@@ -64,7 +53,7 @@ public void DisposePoolRemovesFromFactory()
public async Task FactoryHeartbeatWorks()
{
var timeProvider = new FakeTimeProvider(DateTimeOffset.UtcNow.AddDays(1));
- var factory = CreateMemoryPoolFactory(timeProvider);
+ var factory = new PinnedBlockMemoryPoolFactory(new TestMeterFactory(), timeProvider);
// Use 2 pools to make sure they all get triggered by the heartbeat
var pool = Assert.IsType(factory.Create());
@@ -121,11 +110,4 @@ static async Task VerifyPoolEviction(PinnedBlockMemoryPool pool, int previousCou
Assert.InRange(pool.BlockCount(), previousCount - (previousCount / 10), previousCount - (previousCount / 30));
}
}
-
- private static PinnedBlockMemoryPoolFactory CreateMemoryPoolFactory(TimeProvider timeProvider = null)
- {
- return new PinnedBlockMemoryPoolFactory(
- new MemoryPoolMetrics(new TestMeterFactory()),
- timeProvider: timeProvider);
- }
}
diff --git a/src/Servers/Kestrel/Core/test/PinnedBlockMemoryPoolTests.cs b/src/Servers/Kestrel/Core/test/PinnedBlockMemoryPoolTests.cs
index 4a610563471d..1f8d0edebe39 100644
--- a/src/Servers/Kestrel/Core/test/PinnedBlockMemoryPoolTests.cs
+++ b/src/Servers/Kestrel/Core/test/PinnedBlockMemoryPoolTests.cs
@@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.
using System.Buffers;
-using System.Diagnostics.Metrics;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.InternalTesting;
using Microsoft.AspNetCore.Server.Kestrel.Core.Internal;
@@ -229,24 +228,19 @@ public async Task EvictionsAreScheduled()
}
[Fact]
- public void PooledMemoryMetricTracksPooledMemory()
+ public void CurrentMemoryMetricTracksPooledMemory()
{
var testMeterFactory = new TestMeterFactory();
- using var currentMemoryMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", MemoryPoolMetrics.PooledMemoryName);
+ using var currentMemoryMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", "aspnetcore.memory_pool.current_memory");
- var pool = CreateMemoryPool(owner: "test", meterFactory: testMeterFactory);
+ var pool = new PinnedBlockMemoryPool(testMeterFactory);
Assert.Empty(currentMemoryMetric.GetMeasurementSnapshot());
var mem = pool.Rent();
mem.Dispose();
- Assert.Collection(currentMemoryMetric.GetMeasurementSnapshot(),
- m =>
- {
- Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value);
- Assert.Equal("test", (string)m.Tags["aspnetcore.memory_pool.owner"]);
- });
+ Assert.Collection(currentMemoryMetric.GetMeasurementSnapshot(), m => Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value));
mem = pool.Rent();
@@ -273,27 +267,15 @@ public void PooledMemoryMetricTracksPooledMemory()
public void TotalAllocatedMetricTracksAllocatedMemory()
{
var testMeterFactory = new TestMeterFactory();
- using var totalMemoryMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", MemoryPoolMetrics.AllocatedMemoryName);
+ using var totalMemoryMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", "aspnetcore.memory_pool.total_allocated");
- var pool = CreateMemoryPool(owner: "test", meterFactory: testMeterFactory);
+ var pool = new PinnedBlockMemoryPool(testMeterFactory);
Assert.Empty(totalMemoryMetric.GetMeasurementSnapshot());
var mem1 = pool.Rent();
var mem2 = pool.Rent();
- Assert.Collection(totalMemoryMetric.GetMeasurementSnapshot(),
- m =>
- {
- Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value);
- Assert.Equal("test", (string)m.Tags["aspnetcore.memory_pool.owner"]);
- },
- m =>
- {
- Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value);
- Assert.Equal("test", (string)m.Tags["aspnetcore.memory_pool.owner"]);
- });
-
// Each Rent that allocates a new block should increment total memory by block size
Assert.Equal(2 * PinnedBlockMemoryPool.BlockSize, totalMemoryMetric.GetMeasurementSnapshot().EvaluateAsCounter());
@@ -308,9 +290,9 @@ public void TotalAllocatedMetricTracksAllocatedMemory()
public void TotalRentedMetricTracksRentOperations()
{
var testMeterFactory = new TestMeterFactory();
- using var rentMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", MemoryPoolMetrics.RentedMemoryName);
+ using var rentMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", "aspnetcore.memory_pool.total_rented");
- var pool = CreateMemoryPool(owner: "test", meterFactory: testMeterFactory);
+ var pool = new PinnedBlockMemoryPool(testMeterFactory);
Assert.Empty(rentMetric.GetMeasurementSnapshot());
@@ -319,16 +301,8 @@ public void TotalRentedMetricTracksRentOperations()
// Each Rent should record the size of the block rented
Assert.Collection(rentMetric.GetMeasurementSnapshot(),
- m =>
- {
- Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value);
- Assert.Equal("test", (string)m.Tags["aspnetcore.memory_pool.owner"]);
- },
- m =>
- {
- Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value);
- Assert.Equal("test", (string)m.Tags["aspnetcore.memory_pool.owner"]);
- });
+ m => Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value),
+ m => Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value));
mem1.Dispose();
mem2.Dispose();
@@ -341,9 +315,9 @@ public void TotalRentedMetricTracksRentOperations()
public void EvictedMemoryMetricTracksEvictedMemory()
{
var testMeterFactory = new TestMeterFactory();
- using var evictMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", MemoryPoolMetrics.EvictedMemoryName);
+ using var evictMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", "aspnetcore.memory_pool.evicted_memory");
- var pool = CreateMemoryPool(owner: "test", meterFactory: testMeterFactory);
+ var pool = new PinnedBlockMemoryPool(testMeterFactory);
// Fill the pool with some blocks
var blocks = new List>();
@@ -370,7 +344,6 @@ public void EvictedMemoryMetricTracksEvictedMemory()
foreach (var measurement in evictMetric.GetMeasurementSnapshot())
{
Assert.Equal(PinnedBlockMemoryPool.BlockSize, measurement.Value);
- Assert.Equal("test", (string)measurement.Tags["aspnetcore.memory_pool.owner"]);
}
}
@@ -379,10 +352,10 @@ public void EvictedMemoryMetricTracksEvictedMemory()
public void MetricsAreAggregatedAcrossPoolsWithSameMeterFactory()
{
var testMeterFactory = new TestMeterFactory();
- using var rentMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", MemoryPoolMetrics.RentedMemoryName);
+ using var rentMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", "aspnetcore.memory_pool.total_rented");
- var pool1 = CreateMemoryPool(owner: "test", meterFactory: testMeterFactory);
- var pool2 = CreateMemoryPool(owner: "test", meterFactory: testMeterFactory);
+ var pool1 = new PinnedBlockMemoryPool(testMeterFactory);
+ var pool2 = new PinnedBlockMemoryPool(testMeterFactory);
var mem1 = pool1.Rent();
var mem2 = pool2.Rent();
@@ -402,38 +375,4 @@ public void MetricsAreAggregatedAcrossPoolsWithSameMeterFactory()
mem3.Dispose();
mem4.Dispose();
}
-
- [Fact]
- public void MetricsWithDifferentOwners()
- {
- var testMeterFactory = new TestMeterFactory();
- using var rentMetric = new MetricCollector(testMeterFactory, "Microsoft.AspNetCore.MemoryPool", MemoryPoolMetrics.RentedMemoryName);
-
- var pool1 = CreateMemoryPool(owner: "test1", meterFactory: testMeterFactory);
- var pool2 = CreateMemoryPool(owner: "test2", meterFactory: testMeterFactory);
-
- var mem1 = pool1.Rent();
- var mem2 = pool2.Rent();
-
- // Both pools should contribute to the same metric stream but with different owners
- Assert.Collection(rentMetric.GetMeasurementSnapshot(),
- m =>
- {
- Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value);
- Assert.Equal("test1", (string)m.Tags["aspnetcore.memory_pool.owner"]);
- },
- m =>
- {
- Assert.Equal(PinnedBlockMemoryPool.BlockSize, m.Value);
- Assert.Equal("test2", (string)m.Tags["aspnetcore.memory_pool.owner"]);
- });
-
- mem1.Dispose();
- mem2.Dispose();
- }
-
- private static PinnedBlockMemoryPool CreateMemoryPool(string owner, TestMeterFactory meterFactory)
- {
- return new PinnedBlockMemoryPool(owner: owner, metrics: new MemoryPoolMetrics(meterFactory));
- }
}
diff --git a/src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs b/src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs
index 47a2962d005b..0869ba8169b8 100644
--- a/src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs
+++ b/src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs
@@ -87,7 +87,6 @@ public static IWebHostBuilder UseKestrelCore(this IWebHostBuilder hostBuilder)
services.AddSingleton();
services.AddSingleton();
- services.AddSingleton();
services.TryAddEnumerable(ServiceDescriptor.Singleton(sp => sp.GetRequiredService()));
services.AddSingleton>(sp => sp.GetRequiredService());
});
diff --git a/src/Servers/Kestrel/Transport.NamedPipes/src/Internal/NamedPipeConnectionListener.cs b/src/Servers/Kestrel/Transport.NamedPipes/src/Internal/NamedPipeConnectionListener.cs
index f5d8c21ae6fb..39465a4f3219 100644
--- a/src/Servers/Kestrel/Transport.NamedPipes/src/Internal/NamedPipeConnectionListener.cs
+++ b/src/Servers/Kestrel/Transport.NamedPipes/src/Internal/NamedPipeConnectionListener.cs
@@ -40,7 +40,7 @@ public NamedPipeConnectionListener(
_log = loggerFactory.CreateLogger("Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes");
_endpoint = endpoint;
_options = options;
- _memoryPool = options.MemoryPoolFactory.Create(new MemoryPoolOptions { Owner = "kestrel" });
+ _memoryPool = options.MemoryPoolFactory.Create();
_listeningToken = _listeningTokenSource.Token;
// Have to create the pool here (instead of DI) because the pool is specific to an endpoint.
_poolPolicy = new NamedPipeServerStreamPoolPolicy(endpoint, options);
diff --git a/src/Servers/Kestrel/Transport.NamedPipes/src/WebHostBuilderNamedPipeExtensions.cs b/src/Servers/Kestrel/Transport.NamedPipes/src/WebHostBuilderNamedPipeExtensions.cs
index e9d22d044b24..3b64cc2c4f7e 100644
--- a/src/Servers/Kestrel/Transport.NamedPipes/src/WebHostBuilderNamedPipeExtensions.cs
+++ b/src/Servers/Kestrel/Transport.NamedPipes/src/WebHostBuilderNamedPipeExtensions.cs
@@ -35,7 +35,6 @@ public static IWebHostBuilder UseNamedPipes(this IWebHostBuilder hostBuilder)
services.AddSingleton();
services.TryAddSingleton, DefaultMemoryPoolFactory>();
- services.TryAddSingleton();
services.AddOptions().Configure((NamedPipeTransportOptions options, IMemoryPoolFactory factory) =>
{
// Set the IMemoryPoolFactory from DI on NamedPipeTransportOptions. Usually this should be the PinnedBlockMemoryPoolFactory from UseKestrelCore.
diff --git a/src/Servers/Kestrel/Transport.Sockets/src/Client/SocketConnectionFactory.cs b/src/Servers/Kestrel/Transport.Sockets/src/Client/SocketConnectionFactory.cs
index 39b7523a7c7c..ef6f2c771579 100644
--- a/src/Servers/Kestrel/Transport.Sockets/src/Client/SocketConnectionFactory.cs
+++ b/src/Servers/Kestrel/Transport.Sockets/src/Client/SocketConnectionFactory.cs
@@ -27,7 +27,7 @@ public SocketConnectionFactory(IOptions options, ILogger
ArgumentNullException.ThrowIfNull(loggerFactory);
_options = options.Value;
- _memoryPool = options.Value.MemoryPoolFactory.Create(SocketConnectionFactoryOptions.MemoryPoolOptions);
+ _memoryPool = options.Value.MemoryPoolFactory.Create();
_trace = loggerFactory.CreateLogger("Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Client");
var maxReadBufferSize = _options.MaxReadBufferSize ?? 0;
diff --git a/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionContextFactory.cs b/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionContextFactory.cs
index e2bc50ef499e..86d2ec2a2d22 100644
--- a/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionContextFactory.cs
+++ b/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionContextFactory.cs
@@ -47,7 +47,7 @@ public SocketConnectionContextFactory(SocketConnectionFactoryOptions options, IL
for (var i = 0; i < _settingsCount; i++)
{
- var memoryPool = _options.MemoryPoolFactory.Create(SocketConnectionFactoryOptions.MemoryPoolOptions);
+ var memoryPool = _options.MemoryPoolFactory.Create();
var transportScheduler = options.UnsafePreferInlineScheduling ? PipeScheduler.Inline : new IOQueue();
_settings[i] = new QueueSettings()
@@ -62,11 +62,11 @@ public SocketConnectionContextFactory(SocketConnectionFactoryOptions options, IL
}
else
{
- var memoryPool = _options.MemoryPoolFactory.Create(SocketConnectionFactoryOptions.MemoryPoolOptions);
+ var memoryPool = _options.MemoryPoolFactory.Create();
var transportScheduler = options.UnsafePreferInlineScheduling ? PipeScheduler.Inline : PipeScheduler.ThreadPool;
- _settings =
- [
+ _settings = new QueueSettings[]
+ {
new QueueSettings()
{
Scheduler = transportScheduler,
@@ -75,7 +75,7 @@ public SocketConnectionContextFactory(SocketConnectionFactoryOptions options, IL
SocketSenderPool = new SocketSenderPool(PipeScheduler.Inline),
MemoryPool = memoryPool,
}
- ];
+ };
_settingsCount = 1;
}
}
diff --git a/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionFactoryOptions.cs b/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionFactoryOptions.cs
index 8290c5602f6c..e77950c87c8e 100644
--- a/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionFactoryOptions.cs
+++ b/src/Servers/Kestrel/Transport.Sockets/src/SocketConnectionFactoryOptions.cs
@@ -69,5 +69,4 @@ internal SocketConnectionFactoryOptions(SocketTransportOptions transportOptions)
public bool UnsafePreferInlineScheduling { get; set; }
internal IMemoryPoolFactory MemoryPoolFactory { get; set; } = DefaultSimpleMemoryPoolFactory.Instance;
- internal static readonly MemoryPoolOptions MemoryPoolOptions = new MemoryPoolOptions { Owner = "kestrel" };
}
diff --git a/src/Servers/Kestrel/shared/DefaultSimpleMemoryPoolFactory.cs b/src/Servers/Kestrel/shared/DefaultSimpleMemoryPoolFactory.cs
index 9c36cd0cf8fc..d3c4f94c333c 100644
--- a/src/Servers/Kestrel/shared/DefaultSimpleMemoryPoolFactory.cs
+++ b/src/Servers/Kestrel/shared/DefaultSimpleMemoryPoolFactory.cs
@@ -10,7 +10,7 @@ internal sealed class DefaultSimpleMemoryPoolFactory : IMemoryPoolFactory
{
public static DefaultSimpleMemoryPoolFactory Instance { get; } = new DefaultSimpleMemoryPoolFactory();
- public MemoryPool Create(MemoryPoolOptions? options = null)
+ public MemoryPool Create()
{
return MemoryPool.Shared;
}
diff --git a/src/Servers/Kestrel/shared/test/TestServiceContext.cs b/src/Servers/Kestrel/shared/test/TestServiceContext.cs
index 30b7135d939b..2987d52f5461 100644
--- a/src/Servers/Kestrel/shared/test/TestServiceContext.cs
+++ b/src/Servers/Kestrel/shared/test/TestServiceContext.cs
@@ -87,6 +87,6 @@ public WrappingMemoryPoolFactory(Func> memoryPoolFactory)
_memoryPoolFactory = memoryPoolFactory;
}
- public MemoryPool Create(MemoryPoolOptions options = null) => _memoryPoolFactory();
+ public MemoryPool Create() => _memoryPoolFactory();
}
}
diff --git a/src/Servers/Kestrel/shared/test/TransportTestHelpers/DiagnosticMemoryPoolFactory.cs b/src/Servers/Kestrel/shared/test/TransportTestHelpers/DiagnosticMemoryPoolFactory.cs
index ebaeec3f3074..91a266249cd1 100644
--- a/src/Servers/Kestrel/shared/test/TransportTestHelpers/DiagnosticMemoryPoolFactory.cs
+++ b/src/Servers/Kestrel/shared/test/TransportTestHelpers/DiagnosticMemoryPoolFactory.cs
@@ -25,11 +25,11 @@ public DiagnosticMemoryPoolFactory(bool allowLateReturn = false, bool rentTracki
_pools = new List();
}
- public MemoryPool Create(MemoryPoolOptions options = null)
+ public MemoryPool Create()
{
lock (_pools)
{
- var pool = new DiagnosticMemoryPool(new PinnedBlockMemoryPool(options?.Owner), _allowLateReturn, _rentTracking);
+ var pool = new DiagnosticMemoryPool(new PinnedBlockMemoryPool(), _allowLateReturn, _rentTracking);
_pools.Add(pool);
return pool;
}
diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/TestTransport/TestServer.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/TestTransport/TestServer.cs
index 5270e2a551b2..e6d4f2edef29 100644
--- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/TestTransport/TestServer.cs
+++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/TestTransport/TestServer.cs
@@ -70,7 +70,7 @@ public TestServer(RequestDelegate app, TestServiceContext context, Action, IAsyncDisposable
{
- private readonly MemoryPoolMetrics? _metrics;
+ private readonly IMeterFactory? _meterFactory;
private readonly ConcurrentDictionary _pools = new();
private readonly PeriodicTimer _timer;
private readonly Task _timerTask;
private readonly ILogger? _logger;
- public DefaultMemoryPoolFactory(MemoryPoolMetrics? metrics = null, ILogger? logger = null)
+ public DefaultMemoryPoolFactory(IMeterFactory? meterFactory = null, ILogger? logger = null)
{
- _metrics = metrics;
+ _meterFactory = meterFactory;
_logger = logger;
_timer = new PeriodicTimer(PinnedBlockMemoryPool.DefaultEvictionDelay);
_timerTask = Task.Run(async () =>
@@ -44,9 +44,9 @@ public DefaultMemoryPoolFactory(MemoryPoolMetrics? metrics = null, ILogger Create(MemoryPoolOptions? options = null)
+ public MemoryPool Create()
{
- var pool = new PinnedBlockMemoryPool(options?.Owner, _metrics, _logger);
+ var pool = new PinnedBlockMemoryPool(_meterFactory, _logger);
_pools.TryAdd(pool, true);
diff --git a/src/Shared/Buffers.MemoryPool/MemoryPoolFactory.cs b/src/Shared/Buffers.MemoryPool/MemoryPoolFactory.cs
index 204f9b789818..24679e1be23d 100644
--- a/src/Shared/Buffers.MemoryPool/MemoryPoolFactory.cs
+++ b/src/Shared/Buffers.MemoryPool/MemoryPoolFactory.cs
@@ -10,17 +10,17 @@ namespace Microsoft.AspNetCore;
internal static class TestMemoryPoolFactory
{
- public static MemoryPool Create(string? owner = null, IMeterFactory? meterFactory = null)
+ public static MemoryPool Create(IMeterFactory? meterFactory = null)
{
#if DEBUG
- return new DiagnosticMemoryPool(CreatePinnedBlockMemoryPool(owner, meterFactory));
+ return new DiagnosticMemoryPool(CreatePinnedBlockMemoryPool(meterFactory));
#else
- return CreatePinnedBlockMemoryPool(owner, meterFactory);
+ return CreatePinnedBlockMemoryPool(meterFactory);
#endif
}
- public static MemoryPool CreatePinnedBlockMemoryPool(string? owner = null, IMeterFactory? meterFactory = null)
+ public static MemoryPool CreatePinnedBlockMemoryPool(IMeterFactory? meterFactory = null)
{
- return new PinnedBlockMemoryPool(owner: owner, metrics: meterFactory != null ? new MemoryPoolMetrics(meterFactory) : null);
+ return new PinnedBlockMemoryPool(meterFactory);
}
}
diff --git a/src/Shared/Buffers.MemoryPool/MemoryPoolMetrics.cs b/src/Shared/Buffers.MemoryPool/MemoryPoolMetrics.cs
deleted file mode 100644
index a8d085390fcd..000000000000
--- a/src/Shared/Buffers.MemoryPool/MemoryPoolMetrics.cs
+++ /dev/null
@@ -1,122 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using System.Diagnostics;
-using System.Diagnostics.Metrics;
-
-#nullable enable
-
-namespace Microsoft.AspNetCore;
-
-internal sealed class MemoryPoolMetrics
-{
- public const string MeterName = "Microsoft.AspNetCore.MemoryPool";
-
- public const string PooledMemoryName = "aspnetcore.memory_pool.pooled";
- public const string AllocatedMemoryName = "aspnetcore.memory_pool.allocated";
- public const string EvictedMemoryName = "aspnetcore.memory_pool.evicted";
- public const string RentedMemoryName = "aspnetcore.memory_pool.rented";
-
- private readonly Meter _meter;
- private readonly UpDownCounter _pooledMemoryCounter;
- private readonly Counter _allocatedMemoryCounter;
- private readonly Counter _evictedMemoryCounter;
- private readonly Counter _rentedMemoryCounter;
-
- public MemoryPoolMetrics(IMeterFactory meterFactory)
- {
- _meter = meterFactory.Create(MeterName);
-
- _pooledMemoryCounter = _meter.CreateUpDownCounter(
- PooledMemoryName,
- unit: "By",
- description: "Number of bytes currently pooled and available for reuse.");
-
- _allocatedMemoryCounter = _meter.CreateCounter(
- AllocatedMemoryName,
- unit: "By",
- description: "Total number of bytes allocated by the memory pool. Allocation occurs when a memory rental request exceeds the available pooled memory.");
-
- _evictedMemoryCounter = _meter.CreateCounter(
- EvictedMemoryName,
- unit: "By",
- description: "Total number of bytes evicted from the memory pool. Eviction occurs when idle pooled memory is reclaimed. Evicted memory is available for garbage collection.");
-
- _rentedMemoryCounter = _meter.CreateCounter(
- RentedMemoryName,
- unit: "By",
- description: "Total number of bytes rented from the memory pool.");
- }
-
- public void UpdatePooledMemory(int bytes, string? owner)
- {
- if (_pooledMemoryCounter.Enabled)
- {
- UpdatePooledMemoryCore(bytes, owner);
- }
- }
-
- private void UpdatePooledMemoryCore(int bytes, string? owner)
- {
- var tags = new TagList();
- AddOwner(ref tags, owner);
-
- _pooledMemoryCounter.Add(bytes, tags);
- }
-
- public void AddAllocatedMemory(int bytes, string? owner)
- {
- if (_allocatedMemoryCounter.Enabled)
- {
- AddAllocatedMemoryCore(bytes, owner);
- }
- }
-
- private void AddAllocatedMemoryCore(int bytes, string? owner)
- {
- var tags = new TagList();
- AddOwner(ref tags, owner);
-
- _allocatedMemoryCounter.Add(bytes, tags);
- }
-
- public void AddEvictedMemory(int bytes, string? owner)
- {
- if (_evictedMemoryCounter.Enabled)
- {
- AddEvictedMemoryCore(bytes, owner);
- }
- }
-
- private void AddEvictedMemoryCore(int bytes, string? owner)
- {
- var tags = new TagList();
- AddOwner(ref tags, owner);
-
- _evictedMemoryCounter.Add(bytes, tags);
- }
-
- public void AddRentedMemory(int bytes, string? owner)
- {
- if (_rentedMemoryCounter.Enabled)
- {
- AddRentedMemoryCore(bytes, owner);
- }
- }
-
- private void AddRentedMemoryCore(int bytes, string? owner)
- {
- var tags = new TagList();
- AddOwner(ref tags, owner);
-
- _rentedMemoryCounter.Add(bytes, tags);
- }
-
- private static void AddOwner(ref TagList tags, string? owner)
- {
- if (!string.IsNullOrEmpty(owner))
- {
- tags.Add("aspnetcore.memory_pool.owner", owner);
- }
- }
-}
diff --git a/src/Shared/Buffers.MemoryPool/PinnedBlockMemoryPool.cs b/src/Shared/Buffers.MemoryPool/PinnedBlockMemoryPool.cs
index c50f2b6adcd4..4e6be0f91052 100644
--- a/src/Shared/Buffers.MemoryPool/PinnedBlockMemoryPool.cs
+++ b/src/Shared/Buffers.MemoryPool/PinnedBlockMemoryPool.cs
@@ -26,17 +26,17 @@ internal sealed class PinnedBlockMemoryPool : MemoryPool, IThreadPoolWorkI
// This can be tuned later if needed.
public static readonly TimeSpan DefaultEvictionDelay = TimeSpan.FromSeconds(10);
- ///
- /// The size of a block. 4096 is chosen because most operating systems use 4k pages.
- ///
- public static int BlockSize => _blockSize;
-
///
/// Max allocation block size for pooled blocks,
/// larger values can be leased but they will be disposed after use rather than returned to the pool.
///
public override int MaxBufferSize { get; } = _blockSize;
+ ///
+ /// The size of a block. 4096 is chosen because most operating systems use 4k pages.
+ ///
+ public static int BlockSize => _blockSize;
+
///
/// Thread-safe collection of blocks which are currently in the pool. A slab will pre-allocate all of the block tracking objects
/// and add them to this collection. When memory is requested it is taken from here first, and when it is returned it is re-added.
@@ -48,32 +48,29 @@ internal sealed class PinnedBlockMemoryPool : MemoryPool, IThreadPoolWorkI
///
private bool _isDisposed; // To detect redundant calls
- private readonly string? _owner;
- private readonly MemoryPoolMetrics? _metrics;
+ private readonly PinnedBlockMemoryPoolMetrics? _metrics;
private readonly ILogger? _logger;
+ private long _currentMemory;
+ private long _evictedMemory;
private DateTimeOffset _nextEviction = DateTime.UtcNow.Add(DefaultEvictionDelay);
- private ulong _rentCount;
- private ulong _returnCount;
+ private uint _rentCount;
+ private uint _returnCount;
private readonly object _disposeSync = new object();
private Action