You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2021/03/25 06:47:42 UTC

[lucenenet] 02/03: Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader: Restored locks on SetCacheSize() method.

This is an automated email from the ASF dual-hosted git repository.

nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git

commit 889a4349218a5d789875a3fe9515a8ff199b36d7
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Tue Mar 16 21:54:49 2021 +0700

    Lucene.Net.Facet.Taxonomy.Directory.DirectoryTaxonomyReader: Restored locks on SetCacheSize() method.
---
 .../Taxonomy/Directory/DirectoryTaxonomyReader.cs  | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/Lucene.Net.Facet/Taxonomy/Directory/DirectoryTaxonomyReader.cs b/src/Lucene.Net.Facet/Taxonomy/Directory/DirectoryTaxonomyReader.cs
index 1106db8..91f6a81 100644
--- a/src/Lucene.Net.Facet/Taxonomy/Directory/DirectoryTaxonomyReader.cs
+++ b/src/Lucene.Net.Facet/Taxonomy/Directory/DirectoryTaxonomyReader.cs
@@ -422,10 +422,24 @@ namespace Lucene.Net.Facet.Taxonomy.Directory
         public virtual void SetCacheSize(int size)
         {
             EnsureOpen();
-            // LUCENENET specific - removed locking here because these collections
-            // internally use Interlocked.Exchange
-            categoryCache.Limit = size;
-            ordinalCache.Limit = size;
+            categoryCacheLock.EnterWriteLock();
+            try
+            {
+                categoryCache.Limit = size;
+            }
+            finally
+            {
+                categoryCacheLock.ExitWriteLock();
+            }
+            ordinalCacheLock.EnterWriteLock();
+            try
+            {
+                ordinalCache.Limit = size;
+            }
+            finally
+            {
+                ordinalCacheLock.ExitWriteLock();
+            }
         }
 
         /// <summary>