exo-jcr SVN: r4696 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene: directory and 1 other directories.
by do-not-reply@jboss.org
Author: nzamosenchuk
Date: 2011-08-05 09:13:26 -0400 (Fri, 05 Aug 2011)
New Revision: 4696
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/DirectoryManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/FSDirectoryManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/spell/LuceneSpellChecker.java
Log:
EXOJCR-1437 : allow to use custom lock factory and fs directory implementation. Fixed problem with offline index double instance creation on start.
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-08-05 10:43:02 UTC (rev 4695)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-08-05 13:13:26 UTC (rev 4696)
@@ -335,10 +335,6 @@
merger.indexAdded(index.getName(), index.getNumDocuments());
}
- offlineIndex =
- new OfflinePersistentIndex(handler.getTextAnalyzer(), handler.getSimilarity(), cache, indexingQueue,
- directoryManager);
-
// this method is run in privileged mode internally
IndexingQueueStore store = new IndexingQueueStore(indexDir);
@@ -832,7 +828,6 @@
executeAndLog(new Commit(getTransactionId()));
indexNames.write();
-
offlineIndex.close();
deleteIndex(offlineIndex);
offlineIndex = null;
@@ -2498,8 +2493,8 @@
/**
* The maximum length of a AddNode String.
*/
- private static final int ENTRY_LENGTH = Long.toString(Long.MAX_VALUE).length() + Action.ADD_NODE.length()
- + Constants.UUID_FORMATTED_LENGTH + 2;
+ private static final int ENTRY_LENGTH =
+ Long.toString(Long.MAX_VALUE).length() + Action.ADD_NODE.length() + Constants.UUID_FORMATTED_LENGTH + 2;
/**
* The uuid of the node to add.
@@ -2900,8 +2895,8 @@
/**
* The maximum length of a DeleteNode String.
*/
- private static final int ENTRY_LENGTH = Long.toString(Long.MAX_VALUE).length() + Action.DELETE_NODE.length()
- + Constants.UUID_FORMATTED_LENGTH + 2;
+ private static final int ENTRY_LENGTH =
+ Long.toString(Long.MAX_VALUE).length() + Action.DELETE_NODE.length() + Constants.UUID_FORMATTED_LENGTH + 2;
/**
* The uuid of the node to remove.
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/DirectoryManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/DirectoryManager.java 2011-08-05 10:43:02 UTC (rev 4695)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/DirectoryManager.java 2011-08-05 13:13:26 UTC (rev 4696)
@@ -16,17 +16,25 @@
*/
package org.exoplatform.services.jcr.impl.core.query.lucene.directory;
-import java.io.IOException;
-
import org.apache.lucene.store.Directory;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex;
+import java.io.IOException;
+
/**
* <code>DirectoryManager</code> defines an interface for managing directory
* instances used by the search index.
*/
public interface DirectoryManager {
+ /**
+ * The full qualified name of the lock factory to use by default, if not
+ * specified org.apache.lucene.store.NativeFSLockFactory will be used
+ */
+ public static final String LOCK_FACTORY_CLASS = PropertyManager
+ .getProperty("org.apache.lucene.store.FSDirectoryLockFactoryClass");
+
/**
* Initializes the directory manager with a reference to the search index.
*
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/FSDirectoryManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/FSDirectoryManager.java 2011-08-05 10:43:02 UTC (rev 4695)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/directory/FSDirectoryManager.java 2011-08-05 13:13:26 UTC (rev 4696)
@@ -81,7 +81,7 @@
public Directory run() throws Exception
{
File dir;
- if (name.equals("."))
+ if (name.equals("."))
{
dir = baseDir;
}
@@ -97,7 +97,7 @@
throw new IOException("Cannot create directory: " + dir);
}
}
- return FSDirectory.open(dir, new NativeFSLockFactory(dir));
+ return FSDirectory.getDirectory(dir, LOCK_FACTORY_CLASS != null ? null : new NativeFSLockFactory(dir));
}
});
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/spell/LuceneSpellChecker.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/spell/LuceneSpellChecker.java 2011-08-05 10:43:02 UTC (rev 4695)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/spell/LuceneSpellChecker.java 2011-08-05 13:13:26 UTC (rev 4696)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.impl.core.query.TraversingQueryNodeVisitor;
import org.exoplatform.services.jcr.impl.core.query.lucene.FieldNames;
import org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex;
+import org.exoplatform.services.jcr.impl.core.query.lucene.directory.DirectoryManager;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -258,7 +259,9 @@
{
public Object run() throws Exception
{
- spellIndexDirectory = FSDirectory.getDirectory(path, new NativeFSLockFactory(path));
+ spellIndexDirectory =
+ FSDirectory.getDirectory(path, DirectoryManager.LOCK_FACTORY_CLASS != null ? null
+ : new NativeFSLockFactory(path));
if (IndexReader.indexExists(spellIndexDirectory))
{
lastRefresh = System.currentTimeMillis();