From f7c1d86ff813c7abf39f38c6a4ba940bc840b1b1 Mon Sep 17 00:00:00 2001 From: carlossanlop Date: Mon, 12 Apr 2021 12:47:57 -0700 Subject: [PATCH 1/2] Revert "Disable Net5CompatFileStream by default (#50166)" This reverts commit 8b2ad5bccff29715d924d0c2d191bc978aaaf320 to unblock dotnet/sdk. --- .../Net5CompatTests/Net5CompatSwitchTests.cs | 2 +- .../Net5CompatTests/runtimeconfig.template.json | 2 +- .../Net5CompatTests/runtimeconfig.template.json | 2 +- .../System/IO/Strategies/FileStreamHelpers.cs | 16 +++++++++++++++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/Net5CompatSwitchTests.cs b/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/Net5CompatSwitchTests.cs index 24f9026b54dfff..bb2d05086cf0ad 100644 --- a/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/Net5CompatSwitchTests.cs +++ b/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/Net5CompatSwitchTests.cs @@ -20,7 +20,7 @@ public static void LegacySwitchIsHonored() .GetField("_strategy", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(fileStream); - Assert.Contains("Net5Compat", strategy.GetType().FullName); + Assert.DoesNotContain("Net5Compat", strategy.GetType().FullName); } File.Delete(filePath); diff --git a/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/runtimeconfig.template.json b/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/runtimeconfig.template.json index 6e843517fe47af..0c1a3482aba4f8 100644 --- a/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/runtimeconfig.template.json +++ b/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/runtimeconfig.template.json @@ -1,5 +1,5 @@ { "configProperties": { - "System.IO.UseNet5CompatFileStream": true + "System.IO.UseNet5CompatFileStream": false } } diff --git a/src/libraries/System.IO/tests/Net5CompatTests/runtimeconfig.template.json b/src/libraries/System.IO/tests/Net5CompatTests/runtimeconfig.template.json index 6e843517fe47af..0c1a3482aba4f8 100644 --- a/src/libraries/System.IO/tests/Net5CompatTests/runtimeconfig.template.json +++ b/src/libraries/System.IO/tests/Net5CompatTests/runtimeconfig.template.json @@ -1,5 +1,5 @@ { "configProperties": { - "System.IO.UseNet5CompatFileStream": true + "System.IO.UseNet5CompatFileStream": false } } diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs index 1ca2e563998caa..d64677b48efe85 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs @@ -7,7 +7,21 @@ namespace System.IO.Strategies { internal static partial class FileStreamHelpers { - internal static bool UseNet5CompatStrategy { get; } = AppContextConfigHelper.GetBooleanConfig("System.IO.UseNet5CompatFileStream", "DOTNET_SYSTEM_IO_USENET5COMPATFILESTREAM"); + // It's enabled by default. We are going to change that once we fix #16354, #25905 and #24847. + internal static bool UseNet5CompatStrategy { get; } = GetNet5CompatFileStreamSetting(); + + private static bool GetNet5CompatFileStreamSetting() + { + if (AppContext.TryGetSwitch("System.IO.UseNet5CompatFileStream", out bool fileConfig)) + { + return fileConfig; + } + + string? envVar = Environment.GetEnvironmentVariable("DOTNET_SYSTEM_IO_USENET5COMPATFILESTREAM"); + return envVar is null + ? true // Net5Compat is currently enabled by default; + : bool.IsTrueStringIgnoreCase(envVar) || envVar.Equals("1"); + } internal static FileStreamStrategy ChooseStrategy(FileStream fileStream, SafeFileHandle handle, FileAccess access, FileShare share, int bufferSize, bool isAsync) => WrapIfDerivedType(fileStream, ChooseStrategyCore(handle, access, share, bufferSize, isAsync)); From d927e65cedbd4fcc42790027483097102eb7bf93 Mon Sep 17 00:00:00 2001 From: carlossanlop Date: Mon, 12 Apr 2021 13:00:06 -0700 Subject: [PATCH 2/2] Update comment with bugs to fix --- .../src/System/IO/Strategies/FileStreamHelpers.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs index d64677b48efe85..e2b8d4ec3343cf 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs @@ -7,7 +7,7 @@ namespace System.IO.Strategies { internal static partial class FileStreamHelpers { - // It's enabled by default. We are going to change that once we fix #16354, #25905 and #24847. + // It's enabled by default. We are going to change that once we fix #51141. internal static bool UseNet5CompatStrategy { get; } = GetNet5CompatFileStreamSetting(); private static bool GetNet5CompatFileStreamSetting()