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

ASF subversion and git services commented on LUCENE-10500:
----------------------------------------------------------

Commit d2b3141e361636a36646b3a45fc322abecd2e957 in lucene's branch 
refs/heads/branch_9x from Luca Cavanna
[ https://gitbox.apache.org/repos/asf?p=lucene.git;h=d2b3141e361 ]

LUCENE-10500: StringValueFacetCounts to not rely on sequential collection (#788)

StringValueFacetCounts should use the segment ordinal instead of the current 
index when looping through the matching hits, as when search is multi-threaded 
the order of the matching hits (one per segment) is not deterministic.

> StringValueFacetCounts relies on sequential collection
> ------------------------------------------------------
>
>                 Key: LUCENE-10500
>                 URL: https://issues.apache.org/jira/browse/LUCENE-10500
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Luca Cavanna
>            Priority: Major
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> We recently moved some of the facets tests to use IndexSearcher#search(Query, 
> CollectorManager) providing a FacetsCollectorManager instead of a 
> FacetsCollector. Whenever newIndexSearcher(IndexReader) is used in tests, 
> concurrent search may now be exercised while it was not before.
> This caused some build failures on TestStringValueFacetCounts:
> {code:java}
> java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
>       at 
> __randomizedtesting.SeedInfo.seed([ED8BF8281FCE5C02:9FC7DD27AEAEEA71]:0)
>       at 
> org.apache.lucene.core@10.0.0-SNAPSHOT/org.apache.lucene.util.packed.Packed64.get(Packed64.java:81)
>       at 
> org.apache.lucene.core@10.0.0-SNAPSHOT/org.apache.lucene.index.OrdinalMap$2.get(OrdinalMap.java:346)
>       at 
> org.apache.lucene.facet.StringValueFacetCounts.countOneSegment(StringValueFacetCounts.java:440)
>       at 
> org.apache.lucene.facet.StringValueFacetCounts.count(StringValueFacetCounts.java:295)
>       at 
> org.apache.lucene.facet.StringValueFacetCounts.<init>(StringValueFacetCounts.java:123)
>       at 
> org.apache.lucene.facet.TestStringValueFacetCounts.checkFacetResult(TestStringValueFacetCounts.java:349)
>       at 
> org.apache.lucene.facet.TestStringValueFacetCounts.testRandom(TestStringValueFacetCounts.java:325)
> {code}
> This looks like a real bug, as StringValueFacetCounts#countOneSegment is 
> called once providing the index of the current loop instead of the ordinal 
> taken from the matching hits that we are analyzing. That works fine with 
> single threaded collection as we will go sequentially and the two indices 
> will always be the same. With multi-threaded search, the order of the 
> returned matching hits (one per segment) is not deterministic.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

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

Reply via email to