What's difficult for me to grok here is you're treating each branch as
static, while the discussion has already evolved to branches evolving over
time (with jdks being back-ported, etc).  Might be more helpful to explain
states and events at different points of branch lifecycles…

On Tue, 3 Jun 2025 at 00:16, Josh McKenzie <jmcken...@apache.org> wrote:

> I originally had "everyone supports highest language level whee" which of
> course would fail to build on older branches.
>
> So this new paradigm would give us the following branch:language level
> support (assuming JDK bump on each release which also won't always happen):
> - trunk: latest
> - trunk-1: latest lang - 1
> - trunk-2: latest lang - 2
>
> So while trunk-1 and trunk-2 would both *support* the newest JDK
> (wherever possible) for runtime, they wouldn't be switched to the new
> language level. That'd leave us able to use the newest language features on
> trunk much more rapidly while *effectively snapshotting the supported
> language on older branches to the lowest JDK they support* (which, when
> they're last in line and about to fall off, is the JDK that was newest at
> the time they came about).
>
> Our risk would be patches going to trunk targeting new language features
> we then found out we needed to back-port would require some massaging to be
> compatible with older branches. I suspect that'll be a rare edge-case so
> seems ok?
>
> Unless I'm completely missing something. I was the one who originally just
> wanted to "latest JDK All The Things" for a hot minute there. =/
>
> On Mon, Jun 2, 2025, at 9:40 AM, Doug Rohrer wrote:
>
> Only thing I’d suggest changing here is “Trunk targets the language level
> of that JDK” shouldn’t happen until after we’ve confirmed the back port of
> the new JDK LTS changes to previous versions - otherwise, you have folks
> starting to use new language features and then have to rip them all out
> when you find that some previous supported Cassandra release can’t use that
> JDK.
>
> Doug
>
> On May 27, 2025, at 10:37 AM, Josh McKenzie <jmcken...@apache.org> wrote:
>
> revised snapshot of the state of conversation here:
>
> *[New LTS JDK Adoption]*
>
>    - Trunk supports 1 JDK at a time
>    - After a branch is cut for a release, we push to get trunk to support
>    latest LTS JDK version available at that time
>    - Trunk targets the language level of that JDK
>    - CI on trunk is that single JDK only
>    - We merge new JDK LTS support to all supported branches at the same
>    time as trunk
>       - In the very rare case a feature would have to be removed due to
>       JDK change (think UDF's scripting engine), we instead keep the maximum
>       allowable JDK for that feature supported on trunk and subsequent 
> releases.
>       We then drop that JDK across all branches once the oldest C* w/that 
> feature
>       ages out of support.
>    - Otherwise, we don't need to worry about dropping JDK support as that
>    will happen naturally w/the dropping of support for a branch. Branches will
>    slowly gain JDK support w/each subsequent trunk-based LTS integration.
>
> *[Branch JDK Support]*
>
>    - N-2: JDK, JDK-1, JDK-2
>    - N-1: JDK, JDK-1
>    - N: JDK
>
> *[CI, JDK's, Upgrades]*
>
>    - CI:
>       - For each branch we run per-commit CI for the latest JDK they
>       support
>       - *TODO: *Periodically we run all CI pipelines for older JDK's
>       per-branch (cadence TBD)
>       - *TODO: *We add basic perf testing across all GA branches with
>       reference workloads (easy-cass-stress workloads?
>       
> <https://github.com/apache/cassandra-easy-stress/tree/main/src/main/kotlin/com/rustyrazorblade/easycassstress/workloads>
>       )
>    - Upgrades
>       - N-2 -> N-1: tested on JDK and JDK-1
>       - N-2 -> N: tested on JDK
>       - N-1 -> N: tested on JDK
>
>
> -----------------------
> The above has 2 non-trivial CI orchestration investments:
>
>    1. Running all CI across all supported JDK on a cadence
>    2. Adding some basic perf smoke tests
>
> Both seem reasonable to me.
>
> On Fri, May 23, 2025, at 7:39 AM, Mick Semb Wever wrote:
>
>
>    .
>
>
>
> For the rare edge case where we have to stop supporting something entirely
> because it's incompatible with a JDK release (has this happened more than
> the 1 time?) - I think a reasonable fallback is to just not backport new
> JDK support and consider carrying forward the older JDK support until the
> release w/the feature in it is EoL'ed. That'd allow us to continue to run
> in-jvm upgrade dtests between the versions on the older JDK.
>
>
>
> This.
> I think the idea of adding new major JDKs to release branches for a number
> of reasons, in theory at least.  …
>
>
>
> I *like* the idea … :)
>
>
>
>

Reply via email to