@@ -84,7 +84,14 @@ internal class FakeAbLegacyTag : IAbLegacyTagRuntime
|
||||
|
||||
internal sealed class FakeAbLegacyTagFactory : IAbLegacyTagFactory
|
||||
{
|
||||
public Dictionary<string, FakeAbLegacyTag> Tags { get; } = new(StringComparer.OrdinalIgnoreCase);
|
||||
// PR ablegacy-12 / #255 — switched from plain Dictionary to ConcurrentDictionary so
|
||||
// the read path (test thread) and the probe loop (background Task) can both call
|
||||
// Create without corrupting the dict. Pre-PR-12 the race existed but only tipped
|
||||
// a few percent of test runs into KeyNotFoundException; PR-12's added
|
||||
// Interlocked.Exchange writes shifted timing enough to make it deterministic-flaky
|
||||
// (~60%).
|
||||
public System.Collections.Concurrent.ConcurrentDictionary<string, FakeAbLegacyTag> Tags { get; } =
|
||||
new(StringComparer.OrdinalIgnoreCase);
|
||||
public Func<AbLegacyTagCreateParams, FakeAbLegacyTag>? Customise { get; set; }
|
||||
|
||||
public IAbLegacyTagRuntime Create(AbLegacyTagCreateParams p)
|
||||
|
||||
Reference in New Issue
Block a user