[ 
https://issues.apache.org/jira/browse/LUCENE-6062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Robert Muir resolved LUCENE-6062.
---------------------------------
       Resolution: Fixed
    Fix Version/s:     (was: 4.10.3)

The bug affects 4.10.x, but the fix would not be easy. On 5.0 fieldinfos 
handling has been simplified considerably around here, making it easy to pass 
the correct ones to producers.

I think this is too much risk to backport.

> Index corruption from numeric DV updates
> ----------------------------------------
>
>                 Key: LUCENE-6062
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6062
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Michael McCandless
>             Fix For: 5.0, Trunk
>
>         Attachments: LUCENE-6062.patch, LUCENE-6062.patch
>
>
> I hit this while working on on LUCENE-6005: when cutting over 
> TestNumericDocValuesUpdates to the new Document2 API, I accidentally enabled 
> additional docValues in the test, and this this:
> {noformat}
> There was 1 failure:
> 1) 
> testUpdateSegmentWithNoDocValues(org.apache.lucene.index.TestNumericDocValuesUpdates)
> java.io.FileNotFoundException: _1_Asserting_0.dvm in 
> dir=RAMDirectory@259847e5 
> lockFactory=org.apache.lucene.store.SingleInstanceLockFactory@30981eab
>       at __randomizedtesting.SeedInfo.seed([0:7C88A439A551C47D]:0)
>       at 
> org.apache.lucene.store.MockDirectoryWrapper.openInput(MockDirectoryWrapper.java:645)
>       at 
> org.apache.lucene.store.Directory.openChecksumInput(Directory.java:110)
>       at 
> org.apache.lucene.codecs.lucene50.Lucene50DocValuesProducer.<init>(Lucene50DocValuesProducer.java:130)
>       at 
> org.apache.lucene.codecs.lucene50.Lucene50DocValuesFormat.fieldsProducer(Lucene50DocValuesFormat.java:182)
>       at 
> org.apache.lucene.codecs.asserting.AssertingDocValuesFormat.fieldsProducer(AssertingDocValuesFormat.java:66)
>       at 
> org.apache.lucene.codecs.perfield.PerFieldDocValuesFormat$FieldsReader.<init>(PerFieldDocValuesFormat.java:267)
>       at 
> org.apache.lucene.codecs.perfield.PerFieldDocValuesFormat.fieldsProducer(PerFieldDocValuesFormat.java:357)
>       at 
> org.apache.lucene.index.SegmentDocValues.newDocValuesProducer(SegmentDocValues.java:51)
>       at 
> org.apache.lucene.index.SegmentDocValues.getDocValuesProducer(SegmentDocValues.java:68)
>       at 
> org.apache.lucene.index.SegmentDocValuesProducer.<init>(SegmentDocValuesProducer.java:63)
>       at 
> org.apache.lucene.index.SegmentReader.initDocValuesProducer(SegmentReader.java:167)
>       at org.apache.lucene.index.SegmentReader.<init>(SegmentReader.java:109)
>       at 
> org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:58)
>       at 
> org.apache.lucene.index.StandardDirectoryReader$1.doBody(StandardDirectoryReader.java:50)
>       at 
> org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:556)
>       at 
> org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:50)
>       at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:63)
>       at 
> org.apache.lucene.index.TestNumericDocValuesUpdates.testUpdateSegmentWithNoDocValues(TestNumericDocValuesUpdates.java:769)
> {noformat}
> A one-line change to the existing test (on trunk) causes this corruption:
> {noformat}
> Index: 
> lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
> ===================================================================
> --- 
> lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java 
>     (revision 1639580)
> +++ 
> lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java 
>     (working copy)
> @@ -750,6 +750,7 @@
>      // second segment with no NDV
>      doc = new Document();
>      doc.add(new StringField("id", "doc1", Store.NO));
> +    doc.add(new NumericDocValuesField("foo", 3));
>      writer.addDocument(doc);
>      doc = new Document();
>      doc.add(new StringField("id", "doc2", Store.NO)); // document that isn't 
> updated
> {noformat}
> For some reason, the base doc values for the 2nd segment is not being 
> written, but clearly should have (to hold field "foo")... I'm not sure why.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to