I'm getting an ArrayIndexOutOfBoundsException in MultiLevelSkipListReader$SkipBuffer. This happens sporadically, on a fairly small index (18 MB, about 30,000 documents). The index is subject to a lot of adds and deletes, some of them concurrently. It happens after about 4 days of heavy usage. I was able to isolate a copy of the index that causes the exception, and I can reproduce the exception cleanly in a Junit test. I can see that readByte(), where the error is occuring, has no bounds checking, therefore I assume that the data in there must be correct? Hence, the index has obviously become corrupted. Further, optimizing the index fixes the problem.
The problem is reproducible in working system. As I said, around 4-5 days after optimization, the same error occurs sporadically. Any ideas? Oh and this is Lucene 2.2.0, jdk 1.5.0_12. The code from the junit test that calls this is pretty simple: Query profileQuery = new TermQuery(new Term(IndexFields.bookmark_profile_id, "1")); Hits h = searcher.search(profileQuery, filterPrivate()); search is a plain old IndexSearcher, and filterPrivate() returns a QueryFilter based on a 2-term BooleanQuery. Full stack trace: Exception in thread "MultiSearcher thread #2" java.lang.ArrayIndexOutOfBoundsException: 14 at org.apache.lucene.index.MultiLevelSkipListReader$SkipBuffer.readByte(MultiLevelSkipListReader.java:258) at org.apache.lucene.store.IndexInput.readVInt(IndexInput.java:57) at org.apache.lucene.index.DefaultSkipListReader.readSkipData(DefaultSkipListReader.java:110) at org.apache.lucene.index.MultiLevelSkipListReader.loadNextSkip(MultiLevelSkipListReader.java:140) at org.apache.lucene.index.MultiLevelSkipListReader.skipTo(MultiLevelSkipListReader.java:110) at org.apache.lucene.index.SegmentTermDocs.skipTo(SegmentTermDocs.java:164) at org.apache.lucene.index.MultiTermDocs.skipTo(MultiReader.java:413) at org.apache.lucene.search.TermScorer.skipTo(TermScorer.java:145) at org.apache.lucene.util.ScorerDocQueue.topSkipToAndAdjustElsePop(ScorerDocQueue.java:120) at org.apache.lucene.search.DisjunctionSumScorer.skipTo(DisjunctionSumScorer.java:229) at org.apache.lucene.search.BooleanScorer2.skipTo(BooleanScorer2.java:381) at org.apache.lucene.search.ConjunctionScorer.doNext(ConjunctionScorer.java:63) at org.apache.lucene.search.ConjunctionScorer.next(ConjunctionScorer.java:58) at org.apache.lucene.search.BooleanScorer2.score(BooleanScorer2.java:327) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:146) at org.apache.lucene.search.Searcher.search(Searcher.java:118) at org.apache.lucene.search.Searcher.search(Searcher.java:97) at org.apache.lucene.search.QueryWrapperFilter.bits(QueryWrapperFilter.java:50) at org.apache.lucene.search.CachingWrapperFilter.bits(CachingWrapperFilter.java:58) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:133) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:113) at org.apache.lucene.search.MultiSearcherThread.run(ParallelMultiSearcher.java:250) java.lang.NullPointerException at org.apache.lucene.search.MultiSearcherThread.hits(ParallelMultiSearcher.java:280) at org.apache.lucene.search.ParallelMultiSearcher.search(ParallelMultiSearcher.java:83) at org.apache.lucene.search.Hits.getMoreDocs(Hits.java:74) at org.apache.lucene.search.Hits.<init>(Hits.java:53) at org.apache.lucene.search.Searcher.search(Searcher.java:46) Thanks. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]