lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Muir (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (LUCENE-5931) DirectoryReader.openIfChanged(oldReader, commit) incorrectly assumes given commit point has deletes/field updates
Date Mon, 15 Sep 2014 10:23:35 GMT

    [ https://issues.apache.org/jira/browse/LUCENE-5931?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14133766#comment-14133766
] 

Robert Muir commented on LUCENE-5931:
-------------------------------------

Yes, I really want to. We can't let such abuse prevent real features, thats just wrong.

If you want safety against deleting files, maybe look at NIO.2 WatchService. This is general
and would give you notification when such things happen rather than having a hack for one
particular user's mistake.

> DirectoryReader.openIfChanged(oldReader, commit) incorrectly assumes given commit point
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
>            Assignee: Michael McCandless
>            Priority: Critical
>         Attachments: CommitReuseTest.java, LUCENE-5931.patch, LUCENE-5931.patch
>
>
> {{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-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org


Mime
View raw message