Hmm, so somehow your stored fields file is truncated -- FieldsReader
was unable to read the first int.
Are you using compound file format in this index?
Do you have any idea how your index may have become corrupt?
Do you still have the original corrupt (not yet fixed) index? If so
can you zip it up & send to me?
For future reference, CheckIndex has a main() so you can just invoke
it from the command line.
Mike
Mindaugas Žakšauskas wrote:
Hi,
Following Mike's advice, the actual (non-masked exception using
Directory constructor) was as following:
Exception in thread "main" java.io.IOException: read past EOF
at
org
.apache
.lucene.store.BufferedIndexInput.refill(BufferedIndexInput.java:151)
at
org
.apache
.lucene.store.BufferedIndexInput.readByte(BufferedIndexInput.java:38)
at org.apache.lucene.store.IndexInput.readInt(IndexInput.java:
68)
at
org.apache.lucene.index.FieldsReader.<init>(FieldsReader.java:84)
at
org.apache.lucene.index.SegmentReader.initialize(SegmentReader.java:
357)
at
org.apache.lucene.index.SegmentReader.get(SegmentReader.java:306)
at
org.apache.lucene.index.SegmentReader.get(SegmentReader.java:269)
at org.apache.lucene.index.DirectoryIndexReader
$1.doBody(DirectoryIndexReader.java:99)
at org.apache.lucene.index.SegmentInfos
$FindSegmentsFile.run(SegmentInfos.java:653)
at
org
.apache
.lucene.index.DirectoryIndexReader.open(DirectoryIndexReader.java:111)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:
316)
at org.apache.lucene.index.IndexReader.open(IndexReader.java:
227)
at
org.apache.lucene.search.IndexSearcher.<init>(IndexSearcher.java:55)
at Test.main(Test.java:8)
CheckIndex.Status value for this index:
clean=false
missingSegments=false
cantOpenSegments=false
segmentsFileName=segments_11a
numSegments=1
segmentFormat="FORMAT_CHARED_DOC_STORE[Lucene 2.3]"
segmentsChecked is an empty ArrayList of 10 elements
toolOutOfDate=false
(let me know if you need values of the rest of the attributes)
I have ran the fixIndex( CheckIndex.Status ) which seemed to fix the
problem (creating IndexSearcher does not throw exceptions any more).
Btw, I was pretty sure this index was created using v2.4.0 - I'm
terribly sorry for misleading Erick in previous email.
Last but not least, thanks a lot for the amazing support, hopefully
this issue can benefit to the Lucene library as well.
Regards,
Mindaugas
On Wed, Oct 29, 2008 at 3:12 PM, Michael McCandless
<[EMAIL PROTECTED]> wrote:
I think I see how this exception can happen. I think you are
hitting a
different exception, which is masked by the exception you're seeing.
Can you run CheckIndex on this index? I think that should show the
actual
root cause.
I think another simple way to see the root cause would be to
separately
first open the directory:
Directory dir = FSDirectory.getDirectory("/path/to/index");
And then instantiate your IndexSearcher with that dir.
Is there only 1 segment in the index?
I see a path whereby on opening a SegmentReader (ie there's only a
single
segment), on then hitting an exception we call doClose() on the
SegmentReader, which will close the directory, but then the retry
logic
(trying different segments_N files) kicks in which then hits the
AlreadyClosedException. It's a bug we should fix (I'll open it &
fix it).
Mike
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]