You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucenenet.apache.org by "Shad Storhaug (Jira)" <ji...@apache.org> on 2019/12/27 00:55:00 UTC

[jira] [Created] (LUCENENET-636) Port ConditionalWeakTable from .NET Core 3.x to .NET Standard 2.0

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)