lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeremy Calvert (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-480) NullPointerException during IndexWriter.mergeSegments
Date Thu, 08 Dec 2005 23:41:09 GMT
    [ http://issues.apache.org/jira/browse/LUCENE-480?page=comments#action_12359810 ] 

Jeremy Calvert commented on LUCENE-480:
---------------------------------------

Apparently my hardware or filesystem is having some difficulties, which could be the reason
the fieldsStream is corrupt. I apologize for the false alarm and sincerely appreciate the
quick feedback.

# dmesg
...
PCI-DMA: Out of IOMMU space for 180224 bytes at device 0000:00:07.0
end_request: I/O error, dev sda, sector 52463038
printk: 1014 messages suppressed.
Buffer I/O error on device md0, logical block 21106784 

> NullPointerException during IndexWriter.mergeSegments
> -----------------------------------------------------
>
>          Key: LUCENE-480
>          URL: http://issues.apache.org/jira/browse/LUCENE-480
>      Project: Lucene - Java
>         Type: Bug
>   Components: Index
>     Versions: CVS Nightly - Specify date in submission, 1.9
>  Environment: 64bit, ubuntu, Java 5 SE
>     Reporter: Jeremy Calvert

>
> Last commit on culprit org.apache.lucene.index.FieldsReader: Sun Oct 30 05:38:46 2005.
> ---------------------------------------------------------
> Offending code in FieldsReader.java:
> ...
>   final Document doc(int n) throws IOException {
>     indexStream.seek(n * 8L);
>     long position = indexStream.readLong();
>     fieldsStream.seek(position);
>     Document doc = new Document();
>     int numFields = fieldsStream.readVInt();
>     for (int i = 0; i < numFields; i++) {
>       int fieldNumber = fieldsStream.readVInt();
>       FieldInfo fi = fieldInfos.fieldInfo(fieldNumber); 
> //
> // This apparently returns null, presumably either as a result of:
> //   catch (IndexOutOfBoundsException ioobe) {
> //      return null;
> //    }
> // in fieldInfos.fieldInfo(int fieldNumber)
> //  - or -
> // because there's a null member of member ArrayList byNumber of FieldInfos
>       byte bits = fieldsStream.readByte();
>       
>       boolean compressed = (bits & FieldsWriter.FIELD_IS_COMPRESSED) != 0;
> ....
>         Field.Store store = Field.Store.YES;
> //
> // Here --v is where the NPE is thrown.        
>         if (fi.isIndexed && tokenize)
>           index = Field.Index.TOKENIZED;
> ...
> ---------------------------------------------------------
> Proposed Patch:
> I'm not sure what the behavior should be in this case, but if it's no big deal that there's
null field info for an index and we should just ignore that index, an obvious patch could
be:
> In FieldsReader.java:
> ...
>     for (int i = 0; i < numFields; i++) {
>       int fieldNumber = fieldsStream.readVInt();
>       FieldInfo fi = fieldInfos.fieldInfo(fieldNumber); 
> //    vvvPatchvvv
>       if(fi == null) {continue;}
>       byte bits = fieldsStream.readByte();
> ...
> ---------------------------------------------------------
> Other observations:
> In my search prior to submitting this issue, I found LUCENE-168, which looks similar,
and is perhaps related, but if so, I'm not sure exactly how.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


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


Mime
View raw message