Hm. We have a wrinkle that's thankfully testable.

I've been talking back and forth w/Mick about his and the TLP team's
experience upgrading clusters to 3.0 vs. upgrading to 3.11. The
observations and assertion: 3.0 has performance regressions from 2.1 that
were fixed through the tick-tock line as well as several significant
optimizations in 3.11 not present on 3.0. Some examples:

   - https://issues.apache.org/jira/browse/CASSANDRA-12269
   - https://issues.apache.org/jira/browse/CASSANDRA-11206
   - https://issues.apache.org/jira/browse/CASSANDRA-12731
   - https://issues.apache.org/jira/browse/CASSANDRA-9766
   - https://issues.apache.org/jira/browse/CASSANDRA-11623

Do we as a project have a sense of whether 3.0's performance is, at this
time, on parity with the 2.1/2.2 line of releases? As I framed it to Mick
on slack, a hypothesis we can test:
"3.11 performs close to parity with 2.1/2.2. 3.0 does not. If we recommend
people upgrade from 2.1 -> 3.0 -> 4.0, we are asking them to have a cluster
in a regressed performance state for potentially months as they execute
their upgrade."

Did I get anything wrong here Mick? ^

I'll work with some folks to test this assertion. *pending results*, what
that would amount to is the following change to the latest state on this
thread:
>From → To:
2.1 → 3.11 → 4.0
3.0 → 4.0
3.11 → 4.0

Fundamentally it doesn't change that we need to confirm 3.0 → 4.0 as well
as 3.11 → 4.0, it strictly amounts to a change in recommendation for 2.1
cluster destinations.

Until we have more information on this, I believe we shouldn't document a
recommendation yet. I'll treat this with urgency.


On Sat, Oct 10, 2020 at 6:05 AM, Benedict Elliott Smith <bened...@apache.org
> wrote:

> This sounds eminently sensible to me.
>
> On 09/10/2020, 19:42, "Joshua McKenzie" <jmcken...@apache.org> wrote:
>
> Fair point on uncertainties and delaying decisions until strictly required
> so we have more data.
>
> I want to nuance my earlier proposal and what we document (sorry for the
> multiple messages; my time is fragmented enough these days that I only have
> thin slices to engage w/stuff like this).
>
> I think we should do a "From → To" model for both testing and supporting
> upgrades and have a point of view as a project for each currently supported
> version of C* in the "From" list. Specifically - we test and recommend the
> following paths:
>
> 1. 2.1 → 3.0 → 4.0
> 2. 3.0 → 4.0 (subset of 1)
> 3. 3.11 → 4.0
>
> There's no value whatsoever in hopping through an interim version if a
> leapfrog is expected to be as tested and stable. The only other alternative
> would be to recommend 2.1 → 3.11 → 4.0 (as Mick alluded to) but that just
> exposes to more deltas from the tick-tock .X line for no added value as you
> mentioned.
>
> We could re-apply the "from-to" testing and support model in future
> releases w/whatever is supported at that time. That way users will be able
> to have a single source of truth on what the project recommends and vets
> for going from wherever they are to the latest.
>
> On Fri, Oct 09, 2020 at 12:05 PM, Benedict Elliott Smith < benedict@
> apache.org> wrote:
>
> There is a sizeable cohort of us who I expect to be primarily focused on
> 3.0->4.0, so if you have a cohort focusing primarily on 3.11->4.0 I think
> we'll be in good shape.
>
> For all subsequent major releases, we test and officially support only 1
> major back
>
> I think we should wait to see what happens before committing ourselves to
> something like this - things like release cadence etc will matter a lot.
> That is *definitely* not to say that I disagree with you, just that I think
> more project future-context is needed to make a decision like this. I
> expect we'll have lots more fun (hopefully positive) conversations around
> topics like this in the coming year, as I have no doubt we all want to
> evolve our approach to releases, and there's no knowing what we'll end up
> deciding (we have done some crazy things in the past __ ).
>
> On 09/10/2020, 16:46, "Joshua McKenzie" <jmcken...@apache.org> wrote:
>
> I think it's a clean and simple heuristic for the project to say "you can
> safely upgrade to adjacent major versions".
>
> The difficulty we face with 3.0 is that it has made many contributors very
> wary of pre 4.0 code and with good reason. Your point about conservative
> users upgrading later in a cycle resonates Benedict, and reflects on the
> confidence we should or should not have in 3.11. I think it's also
> important to realize that many cluster upgrades can take months, so it's
> not a transient exposure to unknowns in a release.
>
> I propose the following compromise:
>
> 1. For 4.0 GA, we consider the following upgrade paths "tested and
> supported": 2.1 → 3.0 → 3.11 → 4.0, and 2.1 → 3.0 → 4.0
> 2. For all subsequent major releases, we test and officially support only
> 1 major back
> 3. Any contributor can optionally meet whatever bar we set for "tested and
> supported" to allow leapfrogging versions, but we won't constrain GA on
> that.
>
> We have to pay down our debt right now, but if we have to continue to do
> this in the future we're not learning from our mistakes.
>
> Speaking for DataStax, we don't have enough resources to work through the
> new testing work on 40_quality_test, the defects that David is surfacing
> like crazy (well done!), and validating 2 major upgrade paths. If you and a
> set of contributors could take on the 3.0 → 4.0 path Benedict, that'd be a
> great help. I also assume we could all collaborate on the tooling / infra /
> approaches we use for this validation so it wouldn't be a complete re-work.
>
> On Fri, Oct 09, 2020 at 11:02 AM, Benedict Elliott Smith < benedict@
> apache.org> wrote:
>
> Since email is very unclear and context gets lost, I'm personally OK with
> officially supporting all of these upgrade paths, but the spectre was
> raised that this might lead to lost labour due to an increased support
> burden. My view is that 3.0->4.0 is probably a safer upgrade path for users
> and as a result a lower support cost to the project, so I would be happy to
> deprecate 3.0->3.11 if this helps alleviate the concerns of others that
> this would be costly to the project. Alternatively, if we want to support
> both but some feel 3.0->4.0 is burdensome, I would be happy to focus on
> 3.0->4.0 while they focus on the paths I would be happy to deprecate.
>
> On 09/10/2020, 15:49, "Benedict Elliott Smith" <bened...@apache.org>
> wrote:
>
> Yeah, and perhaps even drop 2.1 (2.2) -> 3.11 when 4.0 appears.
>
> I think there's anyway a big difference between supported and encouraged.
> I think we should encourage 2.1->3.0->4.0, while maintaining support for
> 2.2->3.0 and 3.0->3.11 for critical bugs only, and 3.11->4.0 in the normal
> way given the userbase that is already on 3.11.
>
> we can expect it to be *stable enough to upgrade through*
>
> I don't know that this is true at all. Most bugs are not found by the
> general userbase, and the most conservative (hence most likely to spot
> problems on upgrade) are generally very late to the party. 2.1(2.2)->3.0 is
> still discovering bugs today, many years after this metric was passed for
> 3.0 - largely as the more sophisticated users upgrade.
>
> On 09/10/2020, 15:40, "Marcus Eriksson" <marc...@apache.org> wrote:
>
> My suggestion for "supported" upgrade paths would be;
>
> 2.1 (2.2) -> 3.0 -> 4.0
> 2.1 (2.2) -> 3.11 -> 4.0
>
> and drop support for 3.0 -> 3.11 when we release 4.0
>
> /Marcus
>
> On 9 October 2020 at 16:12:12, Joshua McKenzie (jmcken...@apache.org)
> wrote:
>
> Some data that I believe is relevant here.
>
> Numerically it's safe to assume there's over 10,000 ASF C* clusters out in
> the world (5,500 in China alone). In surveys (both informal polling and
> primary research), at least 1/3rd of folks are running the 3.X latest if I
> recall correctly.
>
> Basic conclusions we can draw from these data points:
> 1) There are thousands of clusters running some form of post 3.0, so we
> can expect it to be *stable enough to upgrade through*
> 2) We have to support at least 3.11 → 4.0
>
> If 1/3rd of our users are running 2.1, 1/3rd 3.0, and 1/3rd 3.11
> (hand-waving, probably more in the 25 vs. 40 etc but splitting hairs),
> there's clearly a significant value-add in usability of skipping majors
> (3.0->4.0). Depending on how we define "done" and "supported" for upgrade
> testing, this will represent a significant development burden.
>
> From a *functional MVP* perspective on what upgrade paths we need to
> support, the absolute minimum would be 2.1 → 3.0 → 3.11 → 4.0
>
> If anyone wants to step in and officially support the 3.0 → 4.0 line,
> that's fantastic both for the project community and for users. But as far
> as basic table stakes, I can't think of a logical reason 3.0 → 4.0 as an
> upgraded path should be considered a blocker for releasing 4.0 GA.
>
> On Fri, Oct 09, 2020 at 9:53 AM, Mick Semb Wever wrote:
>
> At The Last Pickle we have always recommended avoiding 3.0, including
> upgrading from 2.2 directly to 3.11.
> We (now DataStax) will continue to recommend that folk upgrade to the
> latest 3.11 before upgrading to 4.0.
>
> To clarify that^, if it wasn't obvious, I wasn't making a statement about
> DataStax at at large, but about those of us at TLP and now the team
> providing the consulting for Apache Cassandra from DataStax.
>
> --------------------------------------------------------------------- To
> unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org For additional
> commands, e-mail: dev-h...@cassandra.apache.org
>
> --------------------------------------------------------------------- To
> unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org For additional
> commands, e-mail: dev-h...@cassandra.apache.org
>
> --------------------------------------------------------------------- To
> unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org For additional
> commands, e-mail: dev-h...@cassandra.apache.org
>
> --------------------------------------------------------------------- To
> unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org For additional
> commands, e-mail: dev-h...@cassandra.apache.org
>
> --------------------------------------------------------------------- To
> unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org For additional
> commands, e-mail: dev-h...@cassandra.apache.org
>

Reply via email to