lucenenet-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nightowl...@apache.org
Subject [lucenenet] 26/29: BUG: Fixed invalid method call introduced in #222 to ClearLock that caused the path to double up, which caused the GetCanonicalPathOfLockFile method to fail.
Date Tue, 09 Jul 2019 21:29:42 GMT
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 7f2b76a0a81c3fbe7dd5e329cbf1d6504dba9e2c
Author: Shad Storhaug <shad@shadstorhaug.com>
AuthorDate: Tue Jul 9 22:17:03 2019 +0700

    BUG: Fixed invalid method call introduced in #222 to ClearLock that caused the path to
double up, which caused the GetCanonicalPathOfLockFile method to fail.
---
 src/Lucene.Net.Tests/Store/TestLockFactory.cs |  2 +-
 src/Lucene.Net/Store/NativeFSLockFactory.cs   | 11 ++++++-----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/Lucene.Net.Tests/Store/TestLockFactory.cs b/src/Lucene.Net.Tests/Store/TestLockFactory.cs
index 9fcaa65..2ab4d78 100644
--- a/src/Lucene.Net.Tests/Store/TestLockFactory.cs
+++ b/src/Lucene.Net.Tests/Store/TestLockFactory.cs
@@ -199,7 +199,7 @@ namespace Lucene.Net.Store
         }
 
         // Verify: NativeFSLockFactory works correctly
-        [Test, LongRunningTest]
+        [Test]
         public virtual void TestNativeFSLockFactory()
         {
             var f = new NativeFSLockFactory(CreateTempDir("testNativeFsLockFactory"));
diff --git a/src/Lucene.Net/Store/NativeFSLockFactory.cs b/src/Lucene.Net/Store/NativeFSLockFactory.cs
index a99e178..e21d345 100644
--- a/src/Lucene.Net/Store/NativeFSLockFactory.cs
+++ b/src/Lucene.Net/Store/NativeFSLockFactory.cs
@@ -90,8 +90,8 @@ namespace Lucene.Net.Store
 
 		// LUCENENET: NativeFSLocks in Java are infact singletons; this is how we mimick that to
track instances and make sure
 		// IW.Unlock and IW.IsLocked works correctly
-        private static readonly Dictionary<string, Lock> locks = new Dictionary<string,
Lock>();
-        private static readonly object locksSyncLock = new object();
+        internal static readonly Dictionary<string, Lock> locks = new Dictionary<string,
Lock>();
+        internal static readonly object syncLock = new object();
 
 		/// <summary>
 		/// Given a lock name, return the full prefixed path of the actual lock file.
@@ -111,7 +111,7 @@ namespace Lucene.Net.Store
         {
             var path = GetCanonicalPathOfLockFile(lockName);
             Lock l;
-			lock (locksSyncLock)
+			lock (syncLock)
 			{
 				if (!locks.TryGetValue(path, out l))
 					locks.Add(path, l = NewLock(path));
@@ -135,7 +135,7 @@ namespace Lucene.Net.Store
             Lock l;
 			// this is the reason why we can't use ConcurrentDictionary: we need the removal and disposal
of the lock to be atomic
 			// otherwise it may clash with MakeLock making a lock and ClearLock disposing of it in
another thread.
-			lock (locksSyncLock)
+			lock (syncLock)
 			{
 				if (locks.TryGetValue(path, out l))
 				{
@@ -474,7 +474,8 @@ namespace Lucene.Net.Store
                     // the lock instance from the dictionary that tracks them.
                     try
                     {
-						outerInstance?.ClearLock(path);
+                        lock (NativeFSLockFactory.syncLock)
+                            NativeFSLockFactory.locks.Remove(path);
                     }
                     finally
                     {


Mime
View raw message