Bug 495055 - Do not check drive type before performing Lucene segments
merge
Change-Id: Ia8e5a1ac0f91742e380a084dd9540b79354b7dca
Signed-off-by: Bartlomiej Laczkowski <bartlomiej.l@zend.com>
diff --git a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
index 84e9a5d..da667a3 100644
--- a/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
+++ b/core/plugins/org.eclipse.dltk.core.index.lucene/src/org/eclipse/dltk/internal/core/index/lucene/IndexContainer.java
@@ -21,6 +21,7 @@
import java.util.Map;
import org.apache.lucene.analysis.core.SimpleAnalyzer;
+import org.apache.lucene.index.ConcurrentMergeScheduler;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
@@ -112,22 +113,32 @@
new HashMap<Integer, SearcherManager>());
}
+ private IndexWriter createIndexWriter(Path path) {
+ IndexWriter indexWriter = null;
+ try {
+ Directory indexDir = new IndexDirectory(path);
+ IndexWriterConfig config = new IndexWriterConfig(
+ new SimpleAnalyzer());
+ ConcurrentMergeScheduler mergeScheduler = new ConcurrentMergeScheduler();
+ mergeScheduler.setDefaultMaxMergesAndThreads(true);
+ config.setMergeScheduler(mergeScheduler);
+ config.setOpenMode(OpenMode.CREATE_OR_APPEND);
+ indexWriter = new IndexWriter(indexDir, config);
+ } catch (IOException e) {
+ Logger.logException(e);
+ }
+ return indexWriter;
+ }
+
public final String getId() {
return fContainerId;
}
public synchronized IndexWriter getTimestampsWriter() {
if (fTimestampsWriter == null) {
- try {
- Directory indexDir = new IndexDirectory(
- Paths.get(fIndexRoot, fContainerId, TIMESTAMPS_DIR));
- IndexWriterConfig config = new IndexWriterConfig(
- new SimpleAnalyzer());
- config.setOpenMode(OpenMode.CREATE_OR_APPEND);
- fTimestampsWriter = new IndexWriter(indexDir, config);
- } catch (IOException e) {
- Logger.logException(e);
- }
+ Path writerPath = Paths.get(fIndexRoot, fContainerId,
+ TIMESTAMPS_DIR);
+ fTimestampsWriter = createIndexWriter(writerPath);
}
return fTimestampsWriter;
}
@@ -150,18 +161,10 @@
int elementType) {
IndexWriter writer = fIndexWriters.get(dataType).get(elementType);
if (writer == null) {
- try {
- Directory indexDir = new IndexDirectory(Paths.get(fIndexRoot,
- fContainerId, dataType.getDirectory(),
- String.valueOf(elementType)));
- IndexWriterConfig config = new IndexWriterConfig(
- new SimpleAnalyzer());
- config.setOpenMode(OpenMode.CREATE_OR_APPEND);
- writer = new IndexWriter(indexDir, config);
- fIndexWriters.get(dataType).put(elementType, writer);
- } catch (IOException e) {
- Logger.logException(e);
- }
+ Path writerPath = Paths.get(fIndexRoot, fContainerId,
+ dataType.getDirectory(), String.valueOf(elementType));
+ writer = createIndexWriter(writerPath);
+ fIndexWriters.get(dataType).put(elementType, writer);
}
return writer;
}