That NPE is happening inside Cassandra's sources; I think you need to
trace what's happening there and how its FileBlock can be null?

It looks like it's a bug on how CassandraDirectory handles compound
files (e.g. _0.cfs), which are somewhat tricky because it's a file
that acts itself like a Directory, since it's essentially an archive,
containing multiple files within it.  Have a look at how the
createSlicer method is implemented?  Is it somehow failing to set the
FileBlock?

Mike McCandless

http://blog.mikemccandless.com


On Mon, Feb 17, 2014 at 3:50 AM, Jason Wee <peich...@gmail.com> wrote:
> Hi Mike,
>
> Thank you.
>
> This exception is pretty clear that during lucene execute readInternal(...)
> on _0.cfs and encountered an npe. The root cause is because the object
> being read,  FileBlock is null. As far as i can tell, it happen only during
> reading _0.cfs but not on the index files that were read before ( that is,
> for example, segments.gen, segments_1, _0.cfs).
>
> It's pretty mind boggling to understand without a better description on how
> lucene read the file. Tried to search in google, lucene wiki, lucene source
> repository on the lib and your blog but without much avail, could you give
> some pointer or write a general description on what happened
> after IndexReader reader = DirectoryReader.open(cassandraDirectory); ?
>
> 2014-02-17 16:40:48 CassandraDirectory [INFO] called length() and returning
> 1034
> 2014-02-17 16:40:48 BufferedIndexInput [INFO] length = '1034'
> 2014-02-17 16:40:48 CassandraDirectory [INFO] called length() and returning
> 1034
> 2014-02-17 16:40:48 CassandraDirectory [TRACE] read internal to bytes with
> offset 0 and length 309
> 2014-02-17 16:40:48 CassandraDirectory [INFO] fileDescriptor name =
> '_0.cfs' fileLength = '1034'
> 2014-02-17 16:40:48 CassandraDirectory [INFO] fileDescriptor length 1034
> fileDescriptor blockSize 1
> java.lang.NullPointerException
> at
> org.apache.lucene.store.CassandraDirectory$CassandraIndexInput.readInternal(CassandraDirectory.java:1850)
> at
> org.apache.lucene.store.BufferedIndexInput.readBytes(BufferedIndexInput.java:178)
> at
> org.apache.lucene.store.Directory$SlicedIndexInput.readInternal(Directory.java:306)
> at
> org.apache.lucene.store.BufferedIndexInput.refill(BufferedIndexInput.java:298)
> at
> org.apache.lucene.store.BufferedIndexInput.readByte(BufferedIndexInput.java:50)
> at org.apache.lucene.store.DataInput.readInt(DataInput.java:84)
> at
> org.apache.lucene.store.BufferedIndexInput.readInt(BufferedIndexInput.java:202)
> at org.apache.lucene.codecs.CodecUtil.checkHeader(CodecUtil.java:126)
> at
> org.apache.lucene.codecs.lucene46.Lucene46FieldInfosReader.read(Lucene46FieldInfosReader.java:56)
> at
> org.apache.lucene.index.SegmentReader.readFieldInfos(SegmentReader.java:214)
> at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:94)
> at
> org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:62)
> at
> org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:843)
> at
> org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:52)
> at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:66)
> at org.apache.lucene.store.Search.<init>(Search.java:41)
> at org.apache.lucene.store.Search.main(Search.java:34)
>
>
> On Fri, Feb 14, 2014 at 7:14 PM, Michael McCandless <
> luc...@mikemccandless.com> wrote:
>
>> This means Lucene was attempting to open _0.fnm but somehow got the
>> contents of _0.cfs instead; seems likely that it's a bug in the
>> Cassanda Directory implementation?  Somehow it's opening the wrong
>> file name?
>>
>> Mike McCandless
>>
>> http://blog.mikemccandless.com
>>
>>
>> On Fri, Feb 14, 2014 at 3:13 AM, Jason Wee <peich...@gmail.com> wrote:
>> > Hello,
>> >
>> > This is my first question to lucene mailing list, sorry if the question
>> > sounds funny.
>> >
>> > I have been experimenting to store lucene index files on cassandra,
>> > unfortunately the exception got overwhelmed. Below are the stacktrace.
>> >
>> > org.apache.lucene.index.CorruptIndexException: codec mismatch: actual
>> > codec=CompoundFileWriterData vs expected codec=Lucene46FieldInfos
>> > (resource: SlicedIndexInput(SlicedIndexInput(_0.fnm in
>> > lucene-cassandra-desc) in lucene-cassandra-desc slice=31:340))
>> > at
>> org.apache.lucene.codecs.CodecUtil.checkHeaderNoMagic(CodecUtil.java:140)
>> > at org.apache.lucene.codecs.CodecUtil.checkHeader(CodecUtil.java:130)
>> > at
>> >
>> org.apache.lucene.codecs.lucene46.Lucene46FieldInfosReader.read(Lucene46FieldInfosReader.java:56)
>> > at
>> >
>> org.apache.lucene.index.SegmentReader.readFieldInfos(SegmentReader.java:214)
>> > at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:94)
>> > at
>> >
>> org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:62)
>> > at
>> >
>> org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:843)
>> > at
>> >
>> org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:52)
>> > at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:66)
>> > at org.apache.lucene.store.Search.<init>(Search.java:41)
>> > at org.apache.lucene.store.Search.main(Search.java:34)
>> >
>> > I'm not sure what does it means, can anybody help?
>> >
>> > When I check the hex representation of _0.fnm in cassandra, and
>> translated
>> > to ascii. It is something like this:
>> >
>> ??l??Lucene46FieldInfos??????path?Q??????????????PerFieldPostingsFormat.format?Lucene41?PerFieldPostingsFormat.suffix?0?modified?Q??????????????PerFieldPostingsFormat.format?Lucene41?PerFieldPostingsFormat.suffix?0?contents????????????????PerFieldPostingsFormat.format?Lucene41?PerFieldPostingsFormat.suffix?0
>> >
>> > It looks to me the expected codec is found in the _0.fnm file or am I
>> wrong?
>> >
>> > Thank you and please let me know if you need additional information.
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
>> For additional commands, e-mail: java-user-h...@lucene.apache.org
>>
>>

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

Reply via email to