diff --git a/src/DscSubsystem/JsonDscClassCache.cs b/src/DscSubsystem/JsonDscClassCache.cs index 15576a0..647ae24 100644 --- a/src/DscSubsystem/JsonDscClassCache.cs +++ b/src/DscSubsystem/JsonDscClassCache.cs @@ -95,9 +95,14 @@ namespace Microsoft.PowerShell.DesiredStateConfiguration.Internal.CrossPlatform private static readonly HashSet s_hiddenResourceCache = new HashSet(StringComparer.OrdinalIgnoreCase) { "MSFT_BaseConfigurationProviderRegistration", "MSFT_CimConfigurationProviderRegistration", "MSFT_PSConfigurationProviderRegistration" }; - // A collection to prevent circular importing case when Import-DscResource does not have a module specified + /// + /// Gets a collection to prevent circular importing case when Import-DscResource does not have a module specified. + /// + private static HashSet CurrentImportDscResourceInvocations + => t_currentImportDscResourceInvocations ??= new HashSet(StringComparer.OrdinalIgnoreCase); + [ThreadStatic] - private static readonly HashSet t_currentImportDscResourceInvocations = new(StringComparer.OrdinalIgnoreCase); + private static HashSet t_currentImportDscResourceInvocations; /// /// Gets DSC class cache for this runspace. @@ -357,7 +362,7 @@ namespace Microsoft.PowerShell.DesiredStateConfiguration.Internal.CrossPlatform ClassCache.Clear(); ByClassModuleCache.Clear(); CacheResourcesFromMultipleModuleVersions = false; - t_currentImportDscResourceInvocations.Clear(); + CurrentImportDscResourceInvocations.Clear(); } private static string GetModuleQualifiedResourceName(string moduleName, string moduleVersion, string className, string resourceName) @@ -1136,9 +1141,9 @@ namespace Microsoft.PowerShell.DesiredStateConfiguration.Internal.CrossPlatform // Lookup the required resources under available PowerShell modules when modulename is not specified // Make sure that this is not a circular import/parsing var callLocation = string.Join(':', scriptExtent.File, scriptExtent.StartLineNumber, scriptExtent.StartColumnNumber, scriptExtent.Text); - if (!t_currentImportDscResourceInvocations.Contains(callLocation)) + if (!CurrentImportDscResourceInvocations.Contains(callLocation)) { - t_currentImportDscResourceInvocations.Add(callLocation); + CurrentImportDscResourceInvocations.Add(callLocation); using (var powerShell = System.Management.Automation.PowerShell.Create(RunspaceMode.CurrentRunspace)) { powerShell.AddCommand("Get-Module");