You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Dan Wiggin <da...@gmail.com> on 2006/06/01 08:46:33 UTC

Multisearcher Lucene IOException

StackTrace

java.io.IOException: read past EOF
        at org.apache.lucene.store.InputStream.refill(InputStream.java:154)
        at org.apache.lucene.store.InputStream.readByte(InputStream.java:43)
        at org.apache.lucene.store.InputStream.readBytes(InputStream.java
:57)
        at org.apache.lucene.index.SegmentReader.norms(SegmentReader.java
:356)
        at org.apache.lucene.index.MultiReader.norms(MultiReader.java:159)
        at org.apache.lucene.search.TermQuery$TermWeight.scorer(
TermQuery.java:64)
        at org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(
BooleanQuery.java:165)
        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java
:117)
        at org.apache.lucene.search.MultiSearcher.search(MultiSearcher.java
:141)
        at org.apache.lucene.search.Hits.getMoreDocs(Hits.java:64)
        at org.apache.lucene.search.Hits.<init>(Hits.java:51)

The executed code is:
        ArrayList newer = new ArrayList();
        SearchResults sr = null;
        Term searchType=null;
        Term searchIdPortal=null;
        RangeQuery dates = findINTODates(days);
        MultiSearcher searcher=iService.getSearcher();
        BooleanQuery combinada = new BooleanQuery();

        TermQuery searchIdEcat = new TermQuery (new Term (
IndexService.ID_ECAT_lucenedoc,g.getId()));
        combinada.add(searchIdEcat,true,false);

        TermQuery searchGroups = new TermQuery (new Term (
IndexService.ECATID_TYPE_lucenedoc,(new Integer(ToolReference.GROUP_ID
)).toString()));
        combinada.add(searchGroups,true,false);

        if (toolId != null){
            searchType=new Term(IndexService.TYPE_lucenedoc,toolId);
            TermQuery searchThisNow= new TermQuery(searchType);
            combinada.add(searchThisNow,true,false);
        }
        combinada.add(dates,true,false);


        //Tb omitiremos los resultados de comentarios de portalPages y de
Grup Pages
        combinada.add(new TermQuery(new Term(IndexService.TYPE_lucenedoc,
IndexService.GroupPage)),false,true);
        combinada.add(new TermQuery(new Term(IndexService.TYPE_lucenedoc,
IndexService.PortalPage)),false,true);
        combinada.add(new TermQuery(new Term(IndexService.TYPE_lucenedoc,
IndexService.PersonalPage)),false,true);
        combinada.add(new TermQuery(new Term(IndexService.TYPE_lucenedoc,
IndexService.Comentario)),false,true);
        combinada.add(new TermQuery(new Term(IndexService.TYPE_lucenedoc,
IndexService.ATTACHMENT)),false,true);

        try{
            SortField[] sorted = new SortField[2];
            sorted[0]=new SortField(IndexService.DATE_lucenedoc,
SortField.STRING, true);
            sorted[1]=new SortField(IndexService.TIME_lucenedoc,
SortField.STRING, true);

            Hits hitsORDERED =searcher.search(combinada,new Sort(sorted));

            log.debug("Query: "+sorted.toString());



Anyone can tell me what is the problem?
I opened in readonly mode my index with luke and I don't have any problem to
check contents.

Could be my index corrupted?
What is the usually code at startup to do a check of integrity of lucene
index? With this code I can detect if my index is corrupted and force to
create a new index.

thks in advance.

Re: Multisearcher Lucene IOException

Posted by Ken Krugler <kk...@transpac.com>.
Hi Dan,

>java.io.IOException: read past EOF
>        at org.apache.lucene.store.InputStream.refill(InputStream.java:154)
>        at org.apache.lucene.store.InputStream.readByte(InputStream.java:43)
>        at org.apache.lucene.store.InputStream.readBytes(InputStream.java
>:57)
>        at org.apache.lucene.index.SegmentReader.norms(SegmentReader.java
>:356)
>        at org.apache.lucene.index.MultiReader.norms(MultiReader.java:159)
>        at org.apache.lucene.search.TermQuery$TermWeight.scorer(
>TermQuery.java:64)
>        at org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(
>BooleanQuery.java:165)
>        at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java
>:117)
>        at org.apache.lucene.search.MultiSearcher.search(MultiSearcher.java
>:141)
>        at org.apache.lucene.search.Hits.getMoreDocs(Hits.java:64)
>        at org.apache.lucene.search.Hits.<init>(Hits.java:51)

[snip]

We've seen similar errors on occasion, though our stack trace is a 
bit different:

java.io.IOException: read past EOF
         at 
org.apache.lucene.store.BufferedIndexInput.refill(BufferedIndexInput.java:60)
         at 
org.apache.lucene.store.BufferedIndexInput.readByte(BufferedIndexInput.java:33)
         at org.apache.lucene.store.IndexInput.readInt(IndexInput.java:46)
         at org.apache.lucene.store.IndexInput.readLong(IndexInput.java:69)
         at org.apache.lucene.index.FieldsReader.doc(FieldsReader.java:62)
         at 
org.apache.lucene.index.SegmentReader.document(SegmentReader.java:284)
         at org.apache.lucene.index.MultiReader.document(MultiReader.java:104)
         at org.apache.lucene.search.IndexSearcher.doc(IndexSearcher.java:83)
         at 
org.apache.nutch.searcher.IndexSearcher.getDetails(IndexSearcher.java:113)
         at org.apache.nutch.searcher.NutchBean.getDetails(NutchBean.java:300)
         at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at org.apache.nutch.ipc.RPC$1.call(RPC.java:389)
         at org.apache.nutch.ipc.Server$Handler.run(Server.java:193)

Our config is for a Nutch distributed searcher. These errors seem to 
occur under heavy load for us.

[snip]

>Anyone can tell me what is the problem?
>I opened in readonly mode my index with luke and I don't have any problem to
>check contents.
>
>Could be my index corrupted?
>What is the usually code at startup to do a check of integrity of lucene
>index? With this code I can detect if my index is corrupted and force to
>create a new index.

We haven't yet tracked it down, but at least in our case I don't 
think it's a bad index. After seeing a few postings about this same 
general problem, I'm guessing there's a bug hiding someplace.

Sorry to not have a better answer...

-- Ken
-- 
Ken Krugler
Krugle, Inc.
+1 530-210-6378
"Find Code, Find Answers"

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org