LUCENE-1703: add IndexWriter.waitForMerges

git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@787834 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael McCandless 2009-06-23 21:08:16 +00:00
parent 2d93f7e288
commit 629c7ed4c7
2 changed files with 26 additions and 8 deletions

View File

@ -262,6 +262,9 @@ API Changes
of characters before tokenizers run. (Koji Sekiguchi via Mike of characters before tokenizers run. (Koji Sekiguchi via Mike
McCandless) McCandless)
26. LUCENE-1703: Add IndexWriter.waitForMerges. (Tim Smith via Mike
McCandless)
Bug fixes Bug fixes
1. LUCENE-1415: MultiPhraseQuery has incorrect hashCode() and equals() 1. LUCENE-1415: MultiPhraseQuery has incorrect hashCode() and equals()

View File

@ -3286,17 +3286,32 @@ public class IndexWriter {
message("all running merges have aborted"); message("all running merges have aborted");
} else { } else {
// Ensure any running addIndexes finishes. It's fine // waitForMerges() will ensure any running addIndexes finishes.
// if a new one attempts to start because from our // It's fine if a new one attempts to start because from our
// caller above the call will see that we are in the // caller above the call will see that we are in the
// process of closing, and will throw an // process of closing, and will throw an
// AlreadyClosedException. // AlreadyClosedException.
waitForMerges();
}
}
/**
* Wait for any currently outstanding merges to finish.
*
* <p>It is guaranteed that any merges started prior to calling this method
* will have completed once this method completes.</p>
*/
public synchronized void waitForMerges() {
// Ensure any running addIndexes finishes.
acquireRead(); acquireRead();
releaseRead(); releaseRead();
while(pendingMerges.size() > 0 || runningMerges.size() > 0)
while(pendingMerges.size() > 0 || runningMerges.size() > 0) {
doWait(); doWait();
assert 0 == mergingSegments.size();
} }
// sanity check
assert 0 == mergingSegments.size();
} }
/* /*