Hi,

are we ready for a release. Because at moment I don't think we have fully cleaned up the codecs and this could lead to problems when going to 11.x because of version numbers in the index files!?

 * Rename the most recent codec to 10x
 * Remove older 9.x stuff and move to backwards, only keep latest.

Is this still planned or ongoing?

Uwe

Am 30.09.2024 um 19:35 schrieb Luca Cavanna:
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 Schindler
                                        Achterdiek 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 Schindler
                                        Achterdiek 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

--
Uwe Schindler
Achterdiek 19, D-28357 Bremen
https://www.thetaphi.de
eMail:u...@thetaphi.de

Reply via email to