You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2012/01/27 19:14:00 UTC
svn commit: r1236793 - in
/lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index:
DocumentsWriterPerThread.java FreqProxTermsWriterPerField.java
IndexWriter.java SegmentWriteState.java
Author: rmuir
Date: Fri Jan 27 18:14:00 2012
New Revision: 1236793
URL: http://svn.apache.org/viewvc?rev=1236793&view=rev
Log:
LUCENE-3661: track count instead of relying on codec to count() in its livedocs
Modified:
lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java
lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java
Modified: lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java?rev=1236793&r1=1236792&r2=1236793&view=diff
==============================================================================
--- lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java (original)
+++ lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java Fri Jan 27 18:14:00 2012
@@ -115,12 +115,14 @@ public class DocumentsWriterPerThread {
final SegmentInfo segmentInfo;
final BufferedDeletes segmentDeletes;
final MutableBits liveDocs;
+ final int delCount;
private FlushedSegment(SegmentInfo segmentInfo,
- BufferedDeletes segmentDeletes, MutableBits liveDocs) {
+ BufferedDeletes segmentDeletes, MutableBits liveDocs, int delCount) {
this.segmentInfo = segmentInfo;
this.segmentDeletes = segmentDeletes;
this.liveDocs = liveDocs;
+ this.delCount = delCount;
}
}
@@ -452,6 +454,7 @@ public class DocumentsWriterPerThread {
for(int delDocID : pendingDeletes.docIDs) {
flushState.liveDocs.clear(delDocID);
}
+ flushState.delCountOnFlush = pendingDeletes.docIDs.size();
pendingDeletes.bytesUsed.addAndGet(-pendingDeletes.docIDs.size() * BufferedDeletes.BYTES_PER_DEL_DOCID);
pendingDeletes.docIDs.clear();
}
@@ -503,7 +506,7 @@ public class DocumentsWriterPerThread {
doAfterFlush();
success = true;
- return new FlushedSegment(newSegment, segmentDeletes, flushState.liveDocs);
+ return new FlushedSegment(newSegment, segmentDeletes, flushState.liveDocs, flushState.delCountOnFlush);
} finally {
if (!success) {
if (segment != null) {
Modified: lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java?rev=1236793&r1=1236792&r2=1236793&view=diff
==============================================================================
--- lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java (original)
+++ lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java Fri Jan 27 18:14:00 2012
@@ -465,7 +465,10 @@ final class FreqProxTermsWriterPerField
if (state.liveDocs == null) {
state.liveDocs = docState.docWriter.codec.liveDocsFormat().newLiveDocs(state.numDocs);
}
- state.liveDocs.clear(docID);
+ if (state.liveDocs.get(docID)) {
+ state.delCountOnFlush++;
+ state.liveDocs.clear(docID);
+ }
}
totTF += termDocFreq;
Modified: lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/IndexWriter.java?rev=1236793&r1=1236792&r2=1236793&view=diff
==============================================================================
--- lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/IndexWriter.java Fri Jan 27 18:14:00 2012
@@ -2246,7 +2246,7 @@ public class IndexWriter implements Clos
// Must write deleted docs after the CFS so we don't
// slurp the del file into CFS:
if (flushedSegment.liveDocs != null) {
- final int delCount = flushedSegment.segmentInfo.docCount - flushedSegment.liveDocs.count();
+ final int delCount = flushedSegment.delCount;
assert delCount > 0;
newSegment.setDelCount(delCount);
newSegment.advanceDelGen();
Modified: lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java?rev=1236793&r1=1236792&r2=1236793&view=diff
==============================================================================
--- lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java (original)
+++ lucene/dev/branches/lucene3661/lucene/src/java/org/apache/lucene/index/SegmentWriteState.java Fri Jan 27 18:14:00 2012
@@ -32,6 +32,7 @@ public class SegmentWriteState {
public final String segmentName;
public final FieldInfos fieldInfos;
public final int numDocs;
+ public int delCountOnFlush;
// Deletes to apply while we are flushing the segment. A
// Term is enrolled in here if it was deleted at one
@@ -83,5 +84,6 @@ public class SegmentWriteState {
codec = state.codec;
this.segmentSuffix = segmentSuffix;
segDeletes = state.segDeletes;
+ delCountOnFlush = state.delCountOnFlush;
}
}