[
https://issues.apache.org/jira/browse/LUCENE-7491?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15568160#comment-15568160
]
Michael McCandless commented on LUCENE-7491:
--------------------------------------------
bq. To make things less trappy, I'm wondering that maybe
LeafReader.getPointValues() should never return null.
We could maybe separately consider that? I don't think that would have
prevented this particular bug.
I'm generally not really a fan of returning fake empty "should be null but
caller can't be trusted" objects though: I think it's a degree of API leniency
that if you take it to its limit, never ends, i.e. how deeply do you keep
returning null as you dig into the fake object? These are quite expert APIs
and I think it's reasonable to expect the caller to be careful with the return
result...
Today, a null return from {{LeafReader.getPointValues}} is meaningful: it
notifies you this segment has no points indexed at all. We would be hiding
that information if instead we returned a fake empty object.
Not helping matters, I do realize we are inconsistent here, e.g.
{{LeafReader.fields()}} is not null even if there were no postings in that
segment, yet {{Fields.terms(String field)}} is null if the postings didn't have
that field.
> Unexpected merge exception when merging sparse points fields
> ------------------------------------------------------------
>
> Key: LUCENE-7491
> URL: https://issues.apache.org/jira/browse/LUCENE-7491
> Project: Lucene - Core
> Issue Type: Bug
> Reporter: Michael McCandless
> Assignee: Michael McCandless
> Fix For: master (7.0), 6.3
>
> Attachments: LUCENE-7491.patch, LUCENE-7491.patch
>
>
> Spinoff from this user thread: http://markmail.org/thread/vwdvjgupyz6heep5
> If you have a segment that has points, but a given field ("id") didn't index
> points, and a later segment where field "id" does index points, when try to
> merge those segments we hit this (incorrect!) exception:
> {noformat}
> Caused by: org.apache.lucene.index.MergePolicy$MergeException:
> java.lang.IllegalArgumentException: field="id" did not index point values
> at __randomizedtesting.SeedInfo.seed([9F3E7B030EF482BD]:0)
> at
> org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:668)
> at
> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:648)
> Caused by: java.lang.IllegalArgumentException: field="id" did not index point
> values
> at
> org.apache.lucene.codecs.lucene60.Lucene60PointsReader.getBKDReader(Lucene60PointsReader.java:126)
> at
> org.apache.lucene.codecs.lucene60.Lucene60PointsReader.size(Lucene60PointsReader.java:224)
> at
> org.apache.lucene.codecs.lucene60.Lucene60PointsWriter.merge(Lucene60PointsWriter.java:169)
> at
> org.apache.lucene.index.SegmentMerger.mergePoints(SegmentMerger.java:173)
> at org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:122)
> at
> org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4287)
> at org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:3864)
> at
> org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:588)
> at
> org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:626)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]