ArrayIndexOutOfBoundsException from TermInfosReader.get (2.3.2)

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ArrayIndexOutOfBoundsException from TermInfosReader.get (2.3.2)

Daniel Noll-3-2
Hi all.

One of our users has seen an error like this:

> java.lang.ArrayIndexOutOfBoundsException: -1030685
> at org.apache.lucene.index.TermInfosReader.get(TermInfosReader.java:210)
> at org.apache.lucene.index.SegmentTermDocs.seek(SegmentTermDocs.java:54)
> at org.apache.lucene.index.IndexReader.termDocs(IndexReader.java:668)
> at org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:64)
> at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:143)
> at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:113)
> at org.apache.lucene.search.Hits.getMoreDocs(Hits.java:100)
> at org.apache.lucene.search.Hits.<init>(Hits.java:67)

I believe this was from Lucene 2.3.2.

I can't see any records on JIRA related to this being fixed, and the
problem hasn't been reproduced locally so it isn't easy to try 2.4.1 and
see if it has been fixed, but was there a bug along these lines in 2.3.2?

Daniel


--
Daniel Noll                            Forensic and eDiscovery Software
Senior Developer                              The world's most advanced
Nuix                                                email data analysis
http://nuix.com/                                and eDiscovery software

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: ArrayIndexOutOfBoundsException from TermInfosReader.get (2.3.2)

Michael McCandless-2
This doesn't ring a bell (ie sounds like something new).

It's quite spooky.  Any hints on what led to this?  It looks like,
somehow, enumOffset is that massive negative number (-1030685), in
this code from TermInfosReader.java:

    // optimize sequential access: first try scanning cached enum w/o seeking
    SegmentTermEnum enumerator = getEnum();
    if (enumerator.term() != null                 // term is at or past current
        && ((enumerator.prev() != null && term.compareTo(enumerator.prev())> 0)
            || term.compareTo(enumerator.term()) >= 0)) {
      int enumOffset = (int)(enumerator.position/totalIndexInterval)+1;
      if (indexTerms.length == enumOffset  // but before end of block
          || term.compareTo(indexTerms[enumOffset]) < 0)
        return scanEnum(term);  // no need to seek
    }

The only way I can see enumOffset becoming negative is if the
indexInterval stored in the tis file was negative, which is weird.

Can your user run CheckIndex on this index?  Can they also separately
run their app with assertions enabled for org.apache.lucene.*?  (This
turns on more interesting checks).

Is this easily repeated?

Mike

On Mon, Apr 27, 2009 at 7:35 PM, Daniel Noll <[hidden email]> wrote:

> Hi all.
>
> One of our users has seen an error like this:
>
>> java.lang.ArrayIndexOutOfBoundsException: -1030685
>>        at
>> org.apache.lucene.index.TermInfosReader.get(TermInfosReader.java:210)
>>        at
>> org.apache.lucene.index.SegmentTermDocs.seek(SegmentTermDocs.java:54)
>>        at
>> org.apache.lucene.index.IndexReader.termDocs(IndexReader.java:668)
>>        at
>> org.apache.lucene.search.TermQuery$TermWeight.scorer(TermQuery.java:64)
>>        at
>> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:143)
>>        at
>> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:113)
>>        at org.apache.lucene.search.Hits.getMoreDocs(Hits.java:100)
>>        at org.apache.lucene.search.Hits.<init>(Hits.java:67)
>
> I believe this was from Lucene 2.3.2.
>
> I can't see any records on JIRA related to this being fixed, and the problem
> hasn't been reproduced locally so it isn't easy to try 2.4.1 and see if it
> has been fixed, but was there a bug along these lines in 2.3.2?
>
> Daniel
>
>
> --
> Daniel Noll                            Forensic and eDiscovery Software
> Senior Developer                              The world's most advanced
> Nuix                                                email data analysis
> http://nuix.com/                                and eDiscovery software
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [hidden email]
> For additional commands, e-mail: [hidden email]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]