mirror of https://github.com/apache/lucene.git
LUCENE-5079: IndexWriter.hasUncommittedChanges()
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1497039 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
bd1246fad6
commit
146d2be826
|
@ -254,6 +254,9 @@ New Features
|
||||||
* LUCENE-5063: FieldCache.DEFAULT.get(Ints|Longs) now uses bit-packing to save
|
* LUCENE-5063: FieldCache.DEFAULT.get(Ints|Longs) now uses bit-packing to save
|
||||||
memory. (Adrien Grand)
|
memory. (Adrien Grand)
|
||||||
|
|
||||||
|
* LUCENE-5079: IndexWriter.hasUncommittedChanges() returns true if there are
|
||||||
|
changes that have not been committed. (yonik, Mike McCandless, Uwe Schindler)
|
||||||
|
|
||||||
API Changes
|
API Changes
|
||||||
|
|
||||||
* LUCENE-5077: Make it easier to use compressed norms. Lucene42NormsFormat takes
|
* LUCENE-5077: Make it easier to use compressed norms. Lucene42NormsFormat takes
|
||||||
|
|
|
@ -214,7 +214,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit {
|
||||||
private final Analyzer analyzer; // how to analyze text
|
private final Analyzer analyzer; // how to analyze text
|
||||||
|
|
||||||
private volatile long changeCount; // increments every time a change is completed
|
private volatile long changeCount; // increments every time a change is completed
|
||||||
private long lastCommitChangeCount; // last changeCount that was committed
|
private volatile long lastCommitChangeCount; // last changeCount that was committed
|
||||||
|
|
||||||
private List<SegmentInfoPerCommit> rollbackSegments; // list of segmentInfo we will fallback to if the commit fails
|
private List<SegmentInfoPerCommit> rollbackSegments; // list of segmentInfo we will fallback to if the commit fails
|
||||||
|
|
||||||
|
@ -2827,6 +2827,11 @@ public class IndexWriter implements Closeable, TwoPhaseCommit {
|
||||||
commitInternal();
|
commitInternal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns true if there are changes that have not been committed */
|
||||||
|
public final boolean hasUncommittedChanges() {
|
||||||
|
return changeCount != lastCommitChangeCount;
|
||||||
|
}
|
||||||
|
|
||||||
private final void commitInternal() throws IOException {
|
private final void commitInternal() throws IOException {
|
||||||
|
|
||||||
if (infoStream.isEnabled("IW")) {
|
if (infoStream.isEnabled("IW")) {
|
||||||
|
@ -2866,8 +2871,8 @@ public class IndexWriter implements Closeable, TwoPhaseCommit {
|
||||||
if (infoStream.isEnabled("IW")) {
|
if (infoStream.isEnabled("IW")) {
|
||||||
infoStream.message("IW", "commit: wrote segments file \"" + pendingCommit.getSegmentsFileName() + "\"");
|
infoStream.message("IW", "commit: wrote segments file \"" + pendingCommit.getSegmentsFileName() + "\"");
|
||||||
}
|
}
|
||||||
lastCommitChangeCount = pendingCommitChangeCount;
|
|
||||||
segmentInfos.updateGeneration(pendingCommit);
|
segmentInfos.updateGeneration(pendingCommit);
|
||||||
|
lastCommitChangeCount = pendingCommitChangeCount;
|
||||||
rollbackSegments = pendingCommit.createBackupSegmentInfos();
|
rollbackSegments = pendingCommit.createBackupSegmentInfos();
|
||||||
deleter.checkpoint(pendingCommit, true);
|
deleter.checkpoint(pendingCommit, true);
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
@ -2209,4 +2209,27 @@ public class TestIndexWriter extends LuceneTestCase {
|
||||||
dir.close();
|
dir.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testHasUncommittedChanges() throws IOException {
|
||||||
|
Directory dir = newDirectory();
|
||||||
|
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())));
|
||||||
|
assertTrue(writer.hasUncommittedChanges()); // this will be true because a commit will create an empty index
|
||||||
|
Document doc = new Document();
|
||||||
|
doc.add(newTextField("myfield", "a b c", Field.Store.NO));
|
||||||
|
writer.addDocument(doc);
|
||||||
|
assertTrue(writer.hasUncommittedChanges());
|
||||||
|
writer.commit();
|
||||||
|
assertFalse(writer.hasUncommittedChanges());
|
||||||
|
writer.addDocument(doc);
|
||||||
|
assertTrue(writer.hasUncommittedChanges());
|
||||||
|
writer.close();
|
||||||
|
|
||||||
|
writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())));
|
||||||
|
assertFalse(writer.hasUncommittedChanges());
|
||||||
|
writer.addDocument(doc);
|
||||||
|
assertTrue(writer.hasUncommittedChanges());
|
||||||
|
|
||||||
|
writer.close();
|
||||||
|
dir.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue