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);