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