Thursday, 10 November
2011
Thu, 10 Nov
'11
8:27 a.m.
Author: nzamosenchuk
Date: 2011-11-10 09:27:38 -0500 (Thu, 10 Nov 2011)
New Revision: 5178
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
Log:
EXOJCR-1625 : fixed
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-11-10
09:13:24 UTC (rev 5177)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-11-10
14:27:38 UTC (rev 5178)
@@ -269,7 +269,7 @@
stopped = true;
}
};
-
+
/**
* The unique id of the workspace corresponding to this multi index
*/
@@ -315,12 +315,6 @@
// as of 1.5 deletable file is not used anymore
removeDeletable();
- // initialize IndexMerger
- merger = new IndexMerger(this);
- merger.setMaxMergeDocs(handler.getMaxMergeDocs());
- merger.setMergeFactor(handler.getMergeFactor());
- merger.setMinMergeDocs(handler.getMinMergeDocs());
-
// copy current index names
Set<String> currentNames = new HashSet<String>(indexNames.getNames());
@@ -344,7 +338,6 @@
index.setUseCompoundFile(handler.getUseCompoundFile());
index.setTermInfosIndexDivisor(handler.getTermInfosIndexDivisor());
indexes.add(index);
- merger.indexAdded(index.getName(), index.getNumDocuments());
}
// this method is run in privileged mode internally
@@ -370,6 +363,7 @@
indexingQueue.initialize(this);
if (modeHandler.getMode() == IndexerIoMode.READ_WRITE)
{
+ // will also initialize IndexMerger
setReadWrite();
}
this.indexNames.setMultiIndex(this);
@@ -388,7 +382,7 @@
// can't register shutdown hook because
// jvm shutdown sequence has already begun,
// silently ignore...
- }
+ }
return null;
}
});
@@ -1357,7 +1351,11 @@
// stop index merger
// when calling this method we must not lock this MultiIndex, otherwise
// a deadlock might occur
- merger.dispose();
+ if (merger != null)
+ {
+ merger.dispose();
+ merger = null;
+ }
synchronized (this)
{
@@ -1625,8 +1623,12 @@
/**
* Initialize IndexMerger.
*/
- private void doInitIndexMerger() throws IOException
+ private void initMerger() throws IOException
{
+ if (merger != null)
+ {
+ log.info("IndexMerger initialization called twice.");
+ }
merger = new IndexMerger(this);
merger.setMaxMergeDocs(handler.getMaxMergeDocs());
merger.setMergeFactor(handler.getMergeFactor());
@@ -1636,6 +1638,7 @@
{
merger.indexAdded(((PersistentIndex)index).getName(),
((PersistentIndex)index).getNumDocuments());
}
+ merger.start();
}
/**
@@ -2512,7 +2515,10 @@
index.indexNames.addName(indexName);
// now that the index is in the active list let the merger know
// about it
- index.merger.indexAdded(indexName, idx.getNumDocuments());
+ if (index.merger != null)
+ {
+ index.merger.indexAdded(indexName, idx.getNumDocuments());
+ }
}
}
@@ -3251,7 +3257,11 @@
protected void setReadOny()
{
// try to stop merger in safe way
- merger.dispose();
+ if (merger != null)
+ {
+ merger.dispose();
+ merger = null;
+ }
flushTask.cancel();
FLUSH_TIMER.purge();
@@ -3284,8 +3294,7 @@
attemptDelete();
// now that we are ready, start index merger
- doInitIndexMerger();
- merger.start();
+ initMerger();
if (redoLogApplied)
{
@@ -3430,8 +3439,7 @@
//invoking offline index
invokeOfflineIndex();
staleIndexes.clear();
- doInitIndexMerger();
- merger.start();
+ initMerger();
}
else
{
@@ -3443,7 +3451,11 @@
else
{
log.info("Setting index OFFLINE ({})",
handler.getContext().getWorkspacePath(true));
- merger.dispose();
+ if (merger != null)
+ {
+ merger.dispose();
+ merger = null;
+ }
offlineIndex =
new OfflinePersistentIndex(handler.getTextAnalyzer(),
handler.getSimilarity(), cache, indexingQueue,
directoryManager);
Show replies by date