You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2009/08/05 13:29:12 UTC
svn commit: r801135 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene:
MultiIndex.java Recovery.java SearchIndex.java
Author: mreutegg
Date: Wed Aug 5 11:29:12 2009
New Revision: 801135
URL: http://svn.apache.org/viewvc?rev=801135&view=rev
Log:
JCR-2219: Improved background text extraction
- fix occasional test failures
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java?rev=801135&r1=801134&r2=801135&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java Wed Aug 5 11:29:12 2009
@@ -436,7 +436,7 @@
// flush whole index when volatile index has been commited.
if (flush) {
- flush();
+ internalFlush();
}
} finally {
synchronized (updateMonitor) {
@@ -781,7 +781,7 @@
log.error("Exception while closing search index.", e);
}
try {
- flush();
+ internalFlush();
} catch (IOException e) {
log.error("Exception while closing search index.", e);
}
@@ -881,11 +881,33 @@
/**
* Flushes this <code>MultiIndex</code>. Persists all pending changes and
- * resets the redo log.
+ * resets the redo log. When this method returned the {@link #multiReader}
+ * is released and and set to <code>null</code>.
*
* @throws IOException if the flush fails.
*/
void flush() throws IOException {
+ synchronized (updateMonitor) {
+ updateInProgress = true;
+ }
+ try {
+ internalFlush();
+ } finally {
+ synchronized (updateMonitor) {
+ updateInProgress = false;
+ updateMonitor.notifyAll();
+ releaseMultiReader();
+ }
+ }
+ }
+
+ /**
+ * Flushes this <code>MultiIndex</code>. Persists all pending changes and
+ * resets the redo log.
+ *
+ * @throws IOException if the flush fails.
+ */
+ private void internalFlush() throws IOException {
synchronized (this) {
// commit volatile index
executeAndLog(new Start(Action.INTERNAL_TRANSACTION));
@@ -1154,18 +1176,7 @@
if (redoLog.hasEntries()) {
log.debug("Flushing index after being idle for "
+ idleTime + " ms.");
- synchronized (updateMonitor) {
- updateInProgress = true;
- }
- try {
- flush();
- } finally {
- synchronized (updateMonitor) {
- updateInProgress = false;
- updateMonitor.notifyAll();
- releaseMultiReader();
- }
- }
+ flush();
}
} catch (IOException e) {
log.error("Unable to commit volatile index", e);
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java?rev=801135&r1=801134&r2=801135&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Recovery.java Wed Aug 5 11:29:12 2009
@@ -170,6 +170,5 @@
// now we are consistent again -> flush
index.flush();
- index.releaseMultiReader();
}
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java?rev=801135&r1=801134&r2=801135&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java Wed Aug 5 11:29:12 2009
@@ -755,6 +755,9 @@
try {
index.getIndexingQueue().waitUntilEmpty();
index.flush();
+ // flush may have pushed nodes into the indexing queue
+ // -> wait again
+ index.getIndexingQueue().waitUntilEmpty();
} catch (IOException e) {
throw new RepositoryException("Failed to flush the index", e);
}