Author: chetanm
Date: Tue Jun 30 12:06:49 2015
New Revision: 1688436

URL: http://svn.apache.org/r1688436
Log:
OAK-3053 - Locking issues seen with CopyOnWrite mode enabled

Use NoLockFactory to avoid Lucene managing locks. Oak by design ensures that 
indexing is not done concurrently

Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java?rev=1688436&r1=1688435&r2=1688436&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
 Tue Jun 30 12:06:49 2015
@@ -56,7 +56,6 @@ import com.google.common.collect.Iterabl
 import com.google.common.collect.Sets;
 import com.google.common.hash.Hashing;
 import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.oak.commons.IOUtils;
 import org.apache.jackrabbit.oak.commons.concurrent.NotifyingFutureTask;
 import org.apache.jackrabbit.oak.util.PerfLogger;
 import org.apache.lucene.store.Directory;
@@ -65,6 +64,7 @@ import org.apache.lucene.store.FilterDir
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexInput;
 import org.apache.lucene.store.IndexOutput;
+import org.apache.lucene.store.NoLockFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -147,7 +147,10 @@ public class IndexCopier implements Copy
             String newVersion = String.valueOf(definition.getReindexCount());
             indexWriterDir = getVersionedDir(indexPath, indexDir, newVersion);
         }
-        Directory dir = FSDirectory.open(indexWriterDir);
+
+        //By design indexing in Oak is single threaded so Lucene locking
+        //can be disabled
+        Directory dir = FSDirectory.open(indexWriterDir, 
NoLockFactory.getNoLockFactory());
 
         log.debug("IndexWriter would use {}", indexWriterDir);
 

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java?rev=1688436&r1=1688435&r2=1688436&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditorTest.java
 Tue Jun 30 12:06:49 2015
@@ -334,7 +334,6 @@ public class LuceneIndexEditorTest {
         assertFalse(defn.isOfOldFormat());
     }
 
-    @Ignore("OAK-3053")
     @Test
     public void copyOnWriteAndLocks() throws Exception {
         ExecutorService executorService = Executors.newFixedThreadPool(2);


Reply via email to