Vitaly Funstein created LUCENE-5931:
---------------------------------------

             Summary: DirectoryReader.openIfChanged(oldReader, commit) 
incorrectly assumes given commit points has deletes/field updates
                 Key: LUCENE-5931
                 URL: https://issues.apache.org/jira/browse/LUCENE-5931
             Project: Lucene - Core
          Issue Type: Bug
          Components: core/index
    Affects Versions: 4.6.1
            Reporter: Vitaly Funstein
            Priority: Critical


{{StandardDirectoryReader}} assumes that the segments from commit point have 
deletes, when they may not, yet the original SegmentReader for the segment that 
we are trying to reuse does. This is evident when running attached JUnit test 
case with asserts enabled (default): 

{noformat}
java.lang.AssertionError
        at 
org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:188)
        at 
org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:326)
        at 
org.apache.lucene.index.StandardDirectoryReader$2.doBody(StandardDirectoryReader.java:320)
        at 
org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:702)
        at 
org.apache.lucene.index.StandardDirectoryReader.doOpenFromCommit(StandardDirectoryReader.java:315)
        at 
org.apache.lucene.index.StandardDirectoryReader.doOpenNoWriter(StandardDirectoryReader.java:311)
        at 
org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:262)
        at 
org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:183)
{noformat}

or, if asserts are disabled then it falls through into NPE:

{noformat}
java.lang.NullPointerException
        at java.io.File.<init>(File.java:305)
        at 
org.apache.lucene.store.NIOFSDirectory.openInput(NIOFSDirectory.java:80)
        at 
org.apache.lucene.codecs.lucene40.BitVector.<init>(BitVector.java:327)
        at 
org.apache.lucene.codecs.lucene40.Lucene40LiveDocsFormat.readLiveDocs(Lucene40LiveDocsFormat.java:90)
        at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:131)
        at 
org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:194)
        at 
org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:326)
        at 
org.apache.lucene.index.StandardDirectoryReader$2.doBody(StandardDirectoryReader.java:320)
        at 
org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:702)
        at 
org.apache.lucene.index.StandardDirectoryReader.doOpenFromCommit(StandardDirectoryReader.java:315)
        at 
org.apache.lucene.index.StandardDirectoryReader.doOpenNoWriter(StandardDirectoryReader.java:311)
        at 
org.apache.lucene.index.StandardDirectoryReader.doOpenIfChanged(StandardDirectoryReader.java:262)
        at 
org.apache.lucene.index.DirectoryReader.openIfChanged(DirectoryReader.java:183)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to