After upgrading to Lucene 2.3 (and subsequently 2.3.1), our
application has experienced sporadic index corruptions on our larger
(and more frequently updated) indexes. These indexes experienced no
corruptions under any prior version of Lucene (which we have been
using for several years).

The pattern of failure seems to be consistent.  First, we receive an
exception like the following:

java.lang.IndexOutOfBoundsException: Index: 4788, Size: 4762
        at java.util.ArrayList.RangeCheck(ArrayList.java:547)
        at java.util.ArrayList.get(ArrayList.java:322)
        at 
org.apache.lucene.index.DocumentsWriter$ThreadState.init(DocumentsWriter.java:749)
        at 
org.apache.lucene.index.DocumentsWriter.getThreadState(DocumentsWriter.java:2391)
        at 
org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:2434)
        at 
org.apache.lucene.index.DocumentsWriter.addDocument(DocumentsWriter.java:2422)
        at 
org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1445)
        at 
org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1424)
        at com.myapp.indexing.IndexerRunner.run(IndexerRunner.java:134)
        at java.lang.Thread.run(Thread.java:619)

When we experience this error, we run a writer.flush() then a writer.close().

Then, we get this exception when trying to re-open the index:

org.apache.lucene.index.CorruptIndexException: doc counts differ for
segment _c2z13: fieldsReader shows 2 but segmentInfo shows 3
        at 
org.apache.lucene.index.SegmentReader.initialize(SegmentReader.java:313)
        at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:262)
        at org.apache.lucene.index.SegmentReader.get(SegmentReader.java:197)
        at 
org.apache.lucene.index.MultiSegmentReader.<init>(MultiSegmentReader.java:55)
        at 
org.apache.lucene.index.DirectoryIndexReader$1.doBody(DirectoryIndexReader.java:75)
        at 
org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:636)
        at 
org.apache.lucene.index.DirectoryIndexReader.open(DirectoryIndexReader.java:63)
        at org.apache.lucene.index.IndexReader.open(IndexReader.java:209)
        at org.apache.lucene.index.IndexReader.open(IndexReader.java:192)
        at com.myapp.indexing.IndexerRunner.run(IndexerRunner.java:107)
        at java.lang.Thread.run(Thread.java:619)

Running the check index application included with 2.3 enables us to
remove the bad documents from the index, but this workaround is less
than desirable.  It would be greatly appreciated if anyone could shed
some light on our issue.

Regards,

Tyler

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to