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 1835a8ee710b0dc1efd22561cf29b39df79b5c9c
Author: Shad Storhaug <[email protected]>
AuthorDate: Sun Nov 21 07:48:46 2021 +0700

    BUG: Lucene.Net.Suggest.Jaspell.JaspellTernarySearchTree: Lazy initialize a 
J2N.Randomizer() instance so we hit both paths approximately evenly instead of 
one path when deleting nodes recursively.
---
 .../Suggest/Jaspell/JaspellTernarySearchTrie.cs                   | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/Lucene.Net.Suggest/Suggest/Jaspell/JaspellTernarySearchTrie.cs 
b/src/Lucene.Net.Suggest/Suggest/Jaspell/JaspellTernarySearchTrie.cs
index 164f97e..ffd844d 100644
--- a/src/Lucene.Net.Suggest/Suggest/Jaspell/JaspellTernarySearchTrie.cs
+++ b/src/Lucene.Net.Suggest/Suggest/Jaspell/JaspellTernarySearchTrie.cs
@@ -33,6 +33,7 @@ using System.Globalization;
 using System.IO;
 using System.IO.Compression;
 using System.Text;
+using System.Threading;
 using JCG = J2N.Collections.Generic;
 
 namespace Lucene.Net.Search.Suggest.Jaspell
@@ -362,6 +363,11 @@ namespace Lucene.Net.Search.Suggest.Jaspell
             }
         }
 
+        // LUCENENET: .NET has no Math.Random() method, so we need to lazy 
initialize an instance for this purpose.
+        // Note that the J2N.Randomizer.Next() method is threadsafe.
+        private static Random random;
+        private static Random Random => LazyInitializer.EnsureInitialized(ref 
random, () => new J2N.Randomizer());
+
         /// <summary>
         /// Recursively visits each node to be deleted.
         /// 
@@ -433,7 +439,7 @@ namespace Lucene.Net.Search.Suggest.Jaspell
             TSTNode targetNode;
             if (deltaHi == deltaLo)
             {
-                if (new Random(1).NextDouble() < 0.5)
+                if (Random.NextDouble() < 0.5)
                 {
                     deltaHi++;
                 }

Reply via email to