Shad Storhaug created LUCENENET-636:
---------------------------------------

             Summary: Port ConditionalWeakTable from .NET Core 3.x to .NET 
Standard 2.0
                 Key: LUCENENET-636
                 URL: https://issues.apache.org/jira/browse/LUCENENET-636
             Project: Lucene.Net
          Issue Type: Task
          Components: Lucene.Net Core, Lucene.Net.Facet, Lucene.Net.Spatial, 
Lucene.Net.TestFramework
    Affects Versions: Lucene.Net 4.8.0
            Reporter: Shad Storhaug


As per LUCENENET-610, the WeakDictionary that has been created to support 
FieldCache and a few other Lucene.NET features does not perform well enough in 
highly concurrent environments.

The [ConditionalWeakTable<TKey, 
TValue>|https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.conditionalweaktable-2]
 is a suitable replacement on .NET Standard 2.1, but on .NET Standard 2.0, it 
doesn't expose the enumerator or the {{AddOrUpdate}} method. All of 
Lucene.NET's usages require one or the other.

So, it would definitely be worth the effort to port the full implementation to 
.NET Standard 2.0.

This port should be added to [J2N|https://github.com/NightOwl888/J2N] in the 
{{J2N.Runtime.CompilerServices}} namespace (to match .NET's namespace 
convention).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to