Re: Proposing a 10.3.1 bug fix release

Ignacio Vera <[email protected]>
Newsgroups gmane.comp.jakarta.lucene.devel
Message-ID <CAKryLwsPtSLjNpzJ0L6pJgJTh63nooPA7ee4G0+MFTeQGkPBxw@mail.gmail.com>
Thank you Ben, fix has been already pushed to the branch.

On Wed, Oct 1, 2025 at 3:42 PM Benjamin Trent <[email protected]> wrote:

> I volunteer as RM!
>
> On Wed, Oct 1, 2025 at 8:26 AM Adrien Grand <[email protected]> wrote:
>
>> I agree that this is a performance bug, though the fact that it only
>> affects queries sorted by score where a term query runs on a field that
>> doesn't index term frequencies suggests to me that it's more a problem for
>> synthetic benchmarks than for real-world workloads. Most of the time, if
>> you sort by score, then your `TermQuery`s would typically either have
>> frequencies indexed (e.g. lexical search, learned sparse retrieval), or be
>> applied as filters (e.g. filter on category for e-commerce) rather than as
>> scoring clauses. (I'm not trying to say it's not a bug, it is a bug and I'm
>> supportive of fixing it, it's an easy/safe fix.)
>>
>> Lucene's nightly benchmarks on the Wikipedia dataset only use term
>> queries on fields that index term frequencies, so they couldn't have caught
>> this. These two slowdowns are different. They happened when we switched the
>> evaluation of conjunctive queries to a "score-first" approach, ie.
>> computing scores on the n-th clause before checking if the [{N+1}-th clause
>> matches (as opposed to only computing scores after verifying that all
>> clauses match, which the code refers to as a "doc-first" approach).
>> Empirically, score-first worked better on queries that match many
>> documents, and doc-first worked better on queries that match few documents.
>> Because of the filter that only matches 5% of docs, FilteredAndHighHigh
>> doesn't match many docs.
>>  - At annotation IN, conjunctive queries switched from a doc-first
>> approach to a score-first approach.
>>  - At annotation IO, conjunctive queries were refactored to evaluate
>> blocks of documents where the min competitive score isn't set with a
>> doc-first approach, and other blocks of documents with a score-first
>> approach. This helped speed up queries that don't match many docs as per
>> the above observation that doc-first approach works better for "sparse"
>> queries.
>>  - At annotation IR, we removed the alignment of this heuristic with
>> blocks so that conjunctive queries moved to score-first immediately after a
>> minimum competitive score was set, instead of waiting til the end of the
>> current block before doing it. Hence the slowdown on sparse queries since
>> we evaluated fewer docs with a doc-first approach and more docs with a
>> score-first approach.
>>  - Annotation IS was a kernel upgrade that reverted the slowdown that we
>> had observed after the previous kernel upgrade at annotation II.
>>
>> You can tell from the benchmark results that it would be better to switch
>> to score-first a bit later, we just haven't found the perfect heuristic yet.
>>
>> However, nightly benchmarks on the NYC taxi dataset did see this
>> performance problem, since they run a disjunctive query on two term queries
>> that run on fields that don't index term frequencies.
>> https://benchmarks.mikemccandless.com/sparseResults.html. As noted
>> elsewhere it wouldn't have told us about the bug on the 10.3 branch though
>> since nightly benchmarks only run against the main branch and the main
>> branch doesn't have this bug at the moment.
>>
>>
>>
>>
>> On Wed, Oct 1, 2025 at 1:11 PM Benjamin Trent <[email protected]>
>> wrote:
>>
>>> Michael,
>>>
>>> Lucene Benchmarks actually caught this. Then other optimizations made
>>> the regression go away (with the original cause not being directly fixed).
>>> Then later it was directly fixed, and never actually backported.
>>>
>>> Ignacio has indeed added a new test on main for this particular bug
>>> (see: https://github.com/apache/lucene/pull/15266)
>>>
>>> Here is the benchmark in Lucene that caught the issue, it was partially
>>> addressed, but regressed again on 'IR', and "fixed" accidentally by other
>>> optimizations.
>>>
>>> https://benchmarks.mikemccandless.com/FilteredAndHighHigh.html
>>>
>>> [image: image.png]
>>>
>>> On Wed, Oct 1, 2025 at 6:43 AM Michael Sokolov <[email protected]>
>>> wrote:
>>>
>>>> It sounds like this is needed. Do we also have any ideas about how we
>>>> could have avoided this? Should we have some added test coverage, maybe a
>>>> luceneutil enhancement? Did we already have a test that would have caught
>>>> but we did not notice?
>>>>
>>>> On Wed, Oct 1, 2025, 4:03 AM Ignacio Vera <[email protected]> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> In Elasticsearch, we have detected some of our benchmarks to degrade
>>>>> badly after upgrading to Lucene 10.3.0. We have nailed down the issue to a
>>>>> bug <https://github.com/apache/lucene/pull/15263> in the posting
>>>>> formats where the impacts returned when there are no frequencies is wrong,
>>>>> leading to a miscalculation of scores.
>>>>>
>>>>> In order to fix this regression, I would like to propose a bug fix
>>>>> release for 10.3 line. I will be pushing the bug fix today so we can start
>>>>> the release process as soon as this is done as far as there are no
>>>>> concerns. I will try to find a release manager or if I cannot I can do it
>>>>> myself.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Ignacio
>>>>>
>>>>>
>>>>> [image: image.png]
>>>>>
>>>>
>>
>> --
>> Adrien
>>
>
image.png (image/png, 165.1 KB) - not displayed
image.png (image/png, 43.6 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.