mirror of https://github.com/apache/lucene.git
LUCENE-3878: add basic liveDocs checks to CheckIndex
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1301650 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
70b95b5996
commit
e3dbc7c8bc
|
@ -20,7 +20,6 @@ package org.apache.lucene.index;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.text.NumberFormat;
|
import java.text.NumberFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
@ -553,12 +552,36 @@ public class CheckIndex {
|
||||||
if (info.docCount - numDocs != info.getDelCount()) {
|
if (info.docCount - numDocs != info.getDelCount()) {
|
||||||
throw new RuntimeException("delete count mismatch: info=" + info.getDelCount() + " vs reader=" + (info.docCount - numDocs));
|
throw new RuntimeException("delete count mismatch: info=" + info.getDelCount() + " vs reader=" + (info.docCount - numDocs));
|
||||||
}
|
}
|
||||||
|
Bits liveDocs = reader.getLiveDocs();
|
||||||
|
if (liveDocs == null) {
|
||||||
|
throw new RuntimeException("segment should have deletions, but liveDocs is null");
|
||||||
|
} else {
|
||||||
|
int numLive = 0;
|
||||||
|
for (int j = 0; j < liveDocs.length(); j++) {
|
||||||
|
if (liveDocs.get(j)) {
|
||||||
|
numLive++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (numLive != numDocs) {
|
||||||
|
throw new RuntimeException("liveDocs count mismatch: info=" + numDocs + ", vs bits=" + numLive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
segInfoStat.numDeleted = info.docCount - numDocs;
|
segInfoStat.numDeleted = info.docCount - numDocs;
|
||||||
msg("OK [" + (segInfoStat.numDeleted) + " deleted docs]");
|
msg("OK [" + (segInfoStat.numDeleted) + " deleted docs]");
|
||||||
} else {
|
} else {
|
||||||
if (info.getDelCount() != 0) {
|
if (info.getDelCount() != 0) {
|
||||||
throw new RuntimeException("delete count mismatch: info=" + info.getDelCount() + " vs reader=" + (info.docCount - numDocs));
|
throw new RuntimeException("delete count mismatch: info=" + info.getDelCount() + " vs reader=" + (info.docCount - numDocs));
|
||||||
}
|
}
|
||||||
|
Bits liveDocs = reader.getLiveDocs();
|
||||||
|
if (liveDocs != null) {
|
||||||
|
// its ok for it to be non-null here, as long as none are set right?
|
||||||
|
for (int j = 0; j < liveDocs.length(); j++) {
|
||||||
|
if (!liveDocs.get(j)) {
|
||||||
|
throw new RuntimeException("liveDocs mismatch: info says no deletions but doc " + j + " is deleted.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
msg("OK");
|
msg("OK");
|
||||||
}
|
}
|
||||||
if (reader.maxDoc() != info.docCount)
|
if (reader.maxDoc() != info.docCount)
|
||||||
|
|
Loading…
Reference in New Issue