Hi all,
given Adrien's limited availability, Chris and I flipped a coin and decided
that I will be the release manager for Lucene 10. branch_10x and
branch_10_0 have already been created. I will follow up with the first RC
tomorrow.

On Mon, Sep 30, 2024 at 5:14 PM Adrien Grand <jpou...@gmail.com> wrote:

> FYI I have little availability this week so Luca and Chris offered to help
> with the release. Thank you both!
>
> Le sam. 14 sept. 2024, 18:07, Luca Cavanna <java...@apache.org> a écrit :
>
>> On the topic of removing search(Query, Collector), I think it is unlikely
>> that we will be able to complete that task before the Lucene 10 branch is
>> cut. It would be nice to still work on the remaining issues, but it's
>> probably good to have less urgency around it hence more time to think about
>> how to properly address the remaining issues. I think that removing a
>> deprecated method leaving users without a proper replacement is not a good
>> trade-off.
>>
>> I have an outstanding PR around CollectorManager#forSequentialExecution,
>> based on the risk I described in my previous message.I am now concluding
>> that it would be safer to remove such a public method from branch_9x before
>> it gets released. I described the reason in the PR I just opened:
>> https://github.com/apache/lucene/pull/13790 . I'd like to know what
>> folks think about this. I myself have changed my mind a few times on the
>> topic.
>>
>> On Thu, Sep 12, 2024 at 10:09 PM Michael Froh <msf...@gmail.com> wrote:
>>
>>> Aha! I realized that I was totally misreading some stacktraces while
>>> debugging some of the Join tests. You're absolutely right that a
>>> ScorerSupplier is created for each doc ID range -- not just the Scorer.
>>> Also, the test that I "helped" Vamsi with didn't really get fixed by moving
>>> construction of the TermsEnum into the get() method -- it just didn't
>>> happen to fail that time. *facepalm*
>>>
>>> Please ignore my unfounded panic :D
>>>
>>> Thanks,
>>> Froh
>>>
>>> On Thu, Sep 12, 2024 at 1:33 AM Luca Cavanna <java...@apache.org> wrote:
>>>
>>>> Thanks for raising this Michael.
>>>>
>>>> I see a risk as well around removing the deprecated search(Query,
>>>> Collector) method by using a sequential collector manager. Previously, we
>>>> would happily execute sequentially despite an executor being provided to
>>>> the searcher (because search(Query, Collector) bypasses concurrency
>>>> entirely). After the migration, we would execute concurrently, hence the
>>>> collector manager would throw an exception as soon as more than one slice
>>>> gets searched. The sequential collector manager can be used in tests to
>>>> overcome the lack of a collector manager, but that only moves the problem
>>>> to the user side: what are users of these collectors going to do given they
>>>> need a collector manager to call search, and we don't provide one? Their
>>>> only option would be to not set an executor to their searcher. Maybe it is
>>>> a possibility to clearly document that but is it acceptable to require
>>>> users to have a non concurrent index searcher instance around to use for
>>>> non concurrent queries? There's only a few cases of this fortunately.
>>>> There's also a couple of cases like QueryUtils and JoinUtil where we have
>>>> utility methods that call search internally and accept an external
>>>> searcher. Those searchers may have an executor set to them, and the only
>>>> safe way to migrate these is to add concurrent collector managers support
>>>> or explicitly state that the provided search shouldn't have an executor set
>>>> to it. Another option if we are not happy with the workaround I mentioned,
>>>> is to consider leaving search(Query, Collector) deprecated in Lucene 10 and
>>>> removing it in Lucene 11. It is a shame because we are not far off, but I
>>>> am not sure that this warrants delaying the release.
>>>> I am not entirely sure how this aligns with the risk you mentioned,
>>>> which cases of SimpleCollector are you referring to specifically?
>>>>
>>>> Regarding your second concern around intra-segment concurrency: while I
>>>> had to adapt a couple of tests to be intra-segment ready as they made wrong
>>>> assumptions, we are now leveraging intra-segment concurrency in all tests
>>>> (provided that the searcher is created using LuceneTestCase#newSearcher),
>>>> besides when DrillSideways is used. I have seen a couple of post-merge
>>>> failures that may be related which I will look into, but nothing that would
>>>> suggest that the design is entirely problematic. When you retrieve a scorer
>>>> supplier or a bulk scorer you provide a LeafReaderContext. The overall
>>>> expectation is that you get a different instance each time, regardless of
>>>> whether you have already seen the segment or not. If that is the case there
>>>> is no state shared between threads, because ScorerSuppliers should not get
>>>> shared across threads? It is not the expectation that the support for
>>>> intra-segment concurrency requires bulk scorers and scorer suppliers to
>>>> become thread-safe.
>>>> With that in mind, I checked DefaultScorerSupplier and I do not see why
>>>> it would not work, as long as each call to retrieve a scorer supplier
>>>> returns a new instance of if that points to a new instance of Scorer, which
>>>> holds state created as part of that same scorerSupplier call. The problem
>>>> that we have is that we duplicate ahead of time work for partitions of the
>>>> same segment (tracked in https://github.com/apache/lucene/issues/13745),
>>>> because if we need to pull doc_values, we will do so for the same segment
>>>> multiple times. I would assume that if something is off with
>>>> DefaultScorerSupplier, tests would show that clearly, as it is widely used.
>>>> I also checked FeatureQuery, and I see that each call to
>>>> scorerSupplier(LeafReaderContext) returns a new instance of the supplier
>>>> which points to different TermsEnum instance retrieved multiple times for
>>>> the same segment. Removing this duplication will require additional work,
>>>> and there will be bugs, or incorrect assumptions made in existing scorer
>>>> supplier instances, but those should not be too hard to fix.
>>>> Does this make sense to you? Perhaps there are additional changes to
>>>> make in the migrate guide or javadocs to clarify what I described, let me
>>>> know what you think.
>>>>
>>>> Cheers
>>>> Luca
>>>>
>>>> On Thu, Sep 12, 2024 at 9:42 AM Michael Froh <msf...@gmail.com> wrote:
>>>>
>>>>> Oh, I forgot to mention:
>>>>>
>>>>> I think we should deprecate the DefaultScorerSupplier constructor that
>>>>> takes a Scorer. There's no way that works with intra-segment concurrency.
>>>>>
>>>>> Maybe we remove DefaultScorerSupplier altogether?
>>>>>
>>>>> On Thu, Sep 12, 2024 at 12:35 AM Michael Froh <msf...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> I'm a big fan of both of Luca's topics. I'd like to raise a small red
>>>>>> flag around them, though, since they seem to be connected.
>>>>>>
>>>>>> Working through the join module and helping my colleague @harshavamsi
>>>>>> on the QueryUtils side, I see two layers of unpreparatedness for the 
>>>>>> modern
>>>>>> "concurrency first" architecture. (Again, I want to make clear that I 
>>>>>> think
>>>>>> the modern architecture is the way to go and we can and should get there 
>>>>>> in
>>>>>> time for Lucene 10.)
>>>>>>
>>>>>> 1. There are several uses of SimpleCollector, where it's assumed that
>>>>>> one collector will collect all results on a single thread. With the
>>>>>> deprecated method, this forces single-threaded behavior all the time. In 
>>>>>> my
>>>>>> opinion, these represent 13+ year technical debt for cases where you
>>>>>> couldn't properly use an IndexSearcher to do concurrent searches.
>>>>>> 2. With the merge of intra-segment searches, we have another layer:
>>>>>> ScorerSuppliers that share mutable state across the Scorers that they
>>>>>> produce. For example, @harshavamsi came across a case today in the 
>>>>>> sigmoid
>>>>>> function for FeatureQuery where a TermsEnum was created in the
>>>>>> ScorerSupplier and passed into the Scorers. Each Scorer shared the same
>>>>>> TermsEnum. What changed? In the old concurrency model, one thread might
>>>>>> search a few segments, but each segment was guaranteed to only be 
>>>>>> searched
>>>>>> by one thread. Now, with intra-segment concurrency, we produce one
>>>>>> ScorerSupplier per segment, but may produce multiple Scorers across
>>>>>> different threads. If the ScorerSupplier produces some mutable object and
>>>>>> shares it across the resulting Scorers, you're going to have a bad time.
>>>>>> Fun fact: back in 2012, we had an office Halloween party and I dressed as
>>>>>> the thing that scares me the most. I printed a picture of Texas (since
>>>>>> everyone recognizes Texas) with a TV remote control mute button in the
>>>>>> middle. I sewed it to my shirt in the four corners. It was mutable state
>>>>>> held by multiple threads.
>>>>>>
>>>>>> I definitely think we should address these before the Lucene 10
>>>>>> release, as they provide a clean break from the old world. I also think
>>>>>> it's a decent amount of work (but not unsurmountable). I'm also maybe no
>>>>>> longer a fan of the helper method that Greg added in his PR for the 
>>>>>> monitor
>>>>>> module, since it risks sweeping non-threadsafe code under the rug, if 
>>>>>> folks
>>>>>> make single-threaded tests (which is essentially what they've been doing
>>>>>> all along -- see my first point above).
>>>>>>
>>>>>> I haven't properly looked into the scope of my second point above,
>>>>>> but I've seen at least two cases in the past two days. Hopefully it's not
>>>>>> too bad, but it might be a risk. I think the first point is still pretty
>>>>>> easy to address.
>>>>>>
>>>>>> Thanks,
>>>>>> Froh
>>>>>>
>>>>>> On Thu, Aug 29, 2024 at 2:15 AM Luca Cavanna <l...@elastic.co.invalid>
>>>>>> wrote:
>>>>>>
>>>>>>> For Lucene 10.0, I have two topics to raise:
>>>>>>>
>>>>>>> 1. Remove the deprecated IndexSearcher#search(Query, Collector) in
>>>>>>> favour of IndexSearcher#search(Query, CollectorManager)  (
>>>>>>> https://github.com/apache/lucene/issues/12892): this involves
>>>>>>> removing the leftover usages in facet, grouping, join and 
>>>>>>> test-framework,
>>>>>>> plus in some tests. A list of the leftover usages is in the description 
>>>>>>> of
>>>>>>> the issue. It would be great to complete this for Lucene 10, otherwise 
>>>>>>> this
>>>>>>> deprecated method and usages will stick around for much longer. What do
>>>>>>> others think? Should we make this a blocker for the release? I think 
>>>>>>> this
>>>>>>> is not a huge effort and it is parallelizable across different people.
>>>>>>>
>>>>>>> 2. Intra-segment concurrency (
>>>>>>> https://github.com/apache/lucene/pull/13542): current thinking is
>>>>>>> to add support for partitioning segments when searching, and searching
>>>>>>> across segment partitions concurrently. My intention is to introduce
>>>>>>> breaking changes and documentation in Lucene 10 (really only the 
>>>>>>> basics),
>>>>>>> without switching the default slicing of IndexSearcher to create segment
>>>>>>> partitions. We will want to leverage segment partitions in testing. More
>>>>>>> iterations are going to be needed to remove duplicated work across
>>>>>>> partitions of the same segment, which is my next step, but currently 
>>>>>>> out of
>>>>>>> scope for Lucene 10. Judging from the reviews I got so far, my PR is not
>>>>>>> far and I am working on it to address comments, polish it a bit more and
>>>>>>> merge it soon.
>>>>>>>
>>>>>>> Feedback is welcome
>>>>>>>
>>>>>>> Cheers
>>>>>>> Luca
>>>>>>>
>>>>>>> On Wed, Aug 28, 2024 at 3:05 PM Adrien Grand <jpou...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Thanks Mike.
>>>>>>>>
>>>>>>>> On Wed, Aug 28, 2024 at 2:16 PM Michael McCandless <
>>>>>>>> luc...@mikemccandless.com> wrote:
>>>>>>>>
>>>>>>>>> I think maybe also https://github.com/apache/lucene/issues/13519
>>>>>>>>> should be a blocker?  It looks like 8 bit vector HNSW quantization is
>>>>>>>>> broken (unless I'm making a silly mistake with luceneutil tooling).
>>>>>>>>>
>>>>>>>>> I've also set its milestone to 10.0.0.
>>>>>>>>>
>>>>>>>>> Do we really not have a way to mark an issue a blocker for a given
>>>>>>>>> release?  That's insane.  OK well I went and created "blocker" label, 
>>>>>>>>> and
>>>>>>>>> added that to GH 13519.  Greg, I'll also go mark your linked issue as
>>>>>>>>> "blocker".
>>>>>>>>>
>>>>>>>>> Mike McCandless
>>>>>>>>>
>>>>>>>>> http://blog.mikemccandless.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Sat, Aug 24, 2024 at 2:33 PM Uwe Schindler <u...@thetaphi.de>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> I updated Policeman Jenkins to have JDK 23 RC and JDK 24 EA
>>>>>>>>>> releases.
>>>>>>>>>>
>>>>>>>>>> Uwe
>>>>>>>>>>
>>>>>>>>>> P.S.: Unfortunately I have to update the macOS Hackintosh VM to
>>>>>>>>>> have a newer operating system version: JDK 22 and later no longer 
>>>>>>>>>> run on
>>>>>>>>>> this machine.
>>>>>>>>>> Am 23.08.2024 um 10:41 schrieb Uwe Schindler:
>>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> In 9.x there's still the backport of
>>>>>>>>>> https://github.com/apache/lucene/pull/13570 to be done. The PR
>>>>>>>>>> apperas in the changelog, but was not backported yet. Chris and I 
>>>>>>>>>> will do
>>>>>>>>>> this soon.
>>>>>>>>>>
>>>>>>>>>> 9.last release on Sept 22 fits perfectly with the JDK 23 release
>>>>>>>>>> (and we will have Panama Vector Support). I am seeting up Jenkins 
>>>>>>>>>> Job with
>>>>>>>>>> latest RC now to verify all vector stuff works with 23.
>>>>>>>>>>
>>>>>>>>>> Uwe
>>>>>>>>>> Am 08.08.2024 um 18:50 schrieb Adrien Grand:
>>>>>>>>>>
>>>>>>>>>> Hello everyone,
>>>>>>>>>>
>>>>>>>>>> As previously discussed
>>>>>>>>>> <https://lists.apache.org/thread/4bhnkkvvodxxgrpj4yqm5yrgj0ppc59r>,
>>>>>>>>>> I plan on releasing 9.last and 10.0 under the following timeline:
>>>>>>>>>> - ~September 15th: 10.0 feature freeze - main becomes 11.0
>>>>>>>>>> - ~September 22nd: 9.last release,
>>>>>>>>>> - ~October 1st: 10.0 release.
>>>>>>>>>>
>>>>>>>>>> Unless someone shortly volunteers to do a 9.x release, this
>>>>>>>>>> 9.last release will likely be 9.12.
>>>>>>>>>>
>>>>>>>>>> As these dates are coming shortly, I would like to start tracking
>>>>>>>>>> blockers. Please reply to this thread with issues that you know 
>>>>>>>>>> about that
>>>>>>>>>> should delay the 9.last or 10.0 releases.
>>>>>>>>>>
>>>>>>>>>> Chris, Uwe: I also wanted to check with you if this timeline
>>>>>>>>>> works well with regards to supporting Java 23 in 9.last and 10.0?
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Adrien
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Uwe SchindlerAchterdiek 19, D-28357 Bremen 
>>>>>>>>>> <https://www.google.com/maps/search/Achterdiek+19,+D-28357+Bremen?entry=gmail&source=g>https://www.thetaphi.de
>>>>>>>>>> eMail: u...@thetaphi.de
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Uwe SchindlerAchterdiek 19, D-28357 Bremen 
>>>>>>>>>> <https://www.google.com/maps/search/Achterdiek+19,+D-28357+Bremen?entry=gmail&source=g>https://www.thetaphi.de
>>>>>>>>>> eMail: u...@thetaphi.de
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Adrien
>>>>>>>>
>>>>>>>

Reply via email to