Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,14 @@ public static class DscClassCache
private static readonly HashSet<string> s_hiddenResourceCache =
new HashSet<string>(StringComparer.OrdinalIgnoreCase) { "MSFT_BaseConfigurationProviderRegistration", "MSFT_CimConfigurationProviderRegistration", "MSFT_PSConfigurationProviderRegistration" };

// A collection to prevent circular importing case when Import-DscResource does not have a module specified
/// <summary>
/// Gets a collection to prevent circular importing case when Import-DscResource does not have a module specified.
/// </summary>
private static HashSet<string> CurrentImportDscResourceInvocations
=> t_currentImportDscResourceInvocations ??= new HashSet<string>(StringComparer.OrdinalIgnoreCase);

[ThreadStatic]
private static readonly HashSet<string> t_currentImportDscResourceInvocations = new(StringComparer.OrdinalIgnoreCase);
private static HashSet<string> t_currentImportDscResourceInvocations;

/// <summary>
/// Gets DSC class cache for this runspace.
Expand Down Expand Up @@ -361,7 +366,7 @@ public static void ClearCache()
ClassCache.Clear();
ByClassModuleCache.Clear();
CacheResourcesFromMultipleModuleVersions = false;
t_currentImportDscResourceInvocations.Clear();
CurrentImportDscResourceInvocations.Clear();
}

private static string GetModuleQualifiedResourceName(string moduleName, string moduleVersion, string className, string resourceName)
Expand Down Expand Up @@ -1140,9 +1145,9 @@ internal static void LoadResourcesFromModuleInImportResourcePostParse(
// 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");
Expand Down