Running upgrade tests backwards is great idea which does not require extra
work.

For stats metadata it already supports writing in previous serialization
version

We need a small fix in compression metadata and that's it.

A flag with the write format version is probably LHF.

Maybe let's try,  we still have time to fix it before 5.0


czw., 23 lut 2023, 10:57 użytkownik Benedict <bened...@apache.org> napisał:

> Forget downgradeability for a moment: we should not be breaking format
> compatibility without good reason. Bumping a major version isn’t enough of
> a reason.
>
> Can somebody explain to me why this is being fought tooth and nail, when
> the work involved is absolutely minimal?
>
> Regarding tests: what more do you want, than running our upgrade suite
> backwards?
>
>
> On 23 Feb 2023, at 09:45, Benjamin Lerer <ble...@apache.org> wrote:
>
> 
>
>> Can somebody explain to me what is so burdensome, that we seem to be
>> spending longer debating it than it would take to implement the necessary
>> changes?
>
>
> I believe that we all agree on the outcome. Everybody wants
> downgradability. The issue is on the path to get there.
>
> As far as I am concerned, I would like to see a proper solution and as
> Jeff suggested the equivalent of the upgrade tests as gatekeepers. Having
> everybody trying to enforce it on his own way will only lead to a poor
> result in my opinion with some addoc code that might not really guarantee
> real downgradability in the end.
> We have rushed in the past to get feature outs and pay the price for it. I
> simply prefer that we take the time to do things right.
>
> Thanks to Scott and you, downgradability got a much better visibility so
> no matter what approach we pick, I am convinced that we will get there.
>
> Le jeu. 23 févr. 2023 à 09:49, Claude Warren, Jr via dev <
> dev@cassandra.apache.org> a écrit :
>
>> Broken downgrading can be fixed (I think) by modifying the
>> SearializationHeader.toHeader() method where it currently throws an
>> UnknownColumnException.  If we can, instead of throwing the exception,
>> create a dropped column for the unexpected column then I think the code
>> will work.
>>
>> I realise that to do this in the wild is not possible as it is a
>> change to released code, but we could handle it going forward.
>>
>> On Wed, Feb 22, 2023 at 11:21 PM Henrik Ingo <henrik.i...@datastax.com>
>> wrote:
>>
>>> ... ok apparently shift+enter  sends messages now?
>>>
>>> I was just saying if at least the file format AND system/tables -
>>> anything written to disk - can be protected with a switch, then it allows
>>> for quick downgrade by shutting down the entire cluster and restarting with
>>> the downgraded binary. It's a start.
>>>
>>> To be able to do that live in a distributed system needs to consider
>>> much more: gossip, streaming, drivers, and ultimately all features, because
>>> we don't' want an application developer to use a shiny new thing that a)
>>> may not be available on all nodes, or b) may disappear if the cluster has
>>> to be downgraded later.
>>>
>>> henrik
>>>
>>> On Thu, Feb 23, 2023 at 1:14 AM Henrik Ingo <henrik.i...@datastax.com>
>>> wrote:
>>>
>>>> Just this once I'm going to be really brief :-)
>>>>
>>>> Just wanted to share for reference how Mongodb implemented
>>>> downgradeability around their 4.4 version:
>>>> https://www.mongodb.com/docs/manual/release-notes/6.0-downgrade-sharded-cluster/
>>>>
>>>> Jeff you're right. Ultimately this is about more than file formats.
>>>> However, ideally if at least the
>>>>
>>>> On Mon, Feb 20, 2023 at 10:02 PM Jeff Jirsa <jji...@gmail.com> wrote:
>>>>
>>>>> I'm not even convinced even 8110 addresses this - just writing
>>>>> sstables in old versions won't help if we ever add things like new types 
>>>>> or
>>>>> new types of collections without other control abilities. Claude's other
>>>>> email in another thread a few hours ago talks about some of these 
>>>>> surprises
>>>>> - "Specifically during the 3.1 -> 4.0 changes a column broadcast_port was
>>>>> added to system/local.  This means that 3.1 system can not read the table
>>>>> as it has no definition for it.  I tried marking the column for deletion 
>>>>> in
>>>>> the metadata and in the serialization header.  The later got past the
>>>>> column not found problem, but I suspect that it just means that data
>>>>> columns after broadcast_port shifted and so incorrectly read." - this is a
>>>>> harder problem to solve than just versioning sstables and network
>>>>> protocols.
>>>>>
>>>>> Stepping back a bit, we have downgrade ability listed as a goal, but
>>>>> it's not (as far as I can tell) universally enforced, nor is it clear at
>>>>> which point we will be able to concretely say "this release can be
>>>>> downgraded to X".   Until we actually define and agree that this is a
>>>>> real goal with a concrete version where downgrade-ability becomes real, it
>>>>> feels like things are somewhat arbitrarily enforced, which is probably 
>>>>> very
>>>>> frustrating for people trying to commit work/tickets.
>>>>>
>>>>> - Jeff
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Feb 20, 2023 at 11:48 AM Dinesh Joshi <djo...@apache.org>
>>>>> wrote:
>>>>>
>>>>>> I’m a big fan of maintaining backward compatibility. Downgradability
>>>>>> implies that we could potentially roll back an upgrade at any time. 
>>>>>> While I
>>>>>> don’t think we need to retain the ability to downgrade in perpetuity it
>>>>>> would be a good objective to maintain strict backward compatibility and
>>>>>> therefore downgradability until a certain point. This would imply
>>>>>> versioning metadata and extending it in such a way that prior version(s)
>>>>>> could continue functioning. This can certainly be expensive to implement
>>>>>> and might bloat on-disk storage. However, we could always offer an option
>>>>>> for the operator to optimize the on-disk structures for the current 
>>>>>> version
>>>>>> then we can rewrite them in the latest version. This optimizes the 
>>>>>> storage
>>>>>> and opens up new functionality. This means new features that can work 
>>>>>> with
>>>>>> old on-disk structures will be available while others that strictly 
>>>>>> require
>>>>>> new versions of the data structures will be unavailable until the 
>>>>>> operator
>>>>>> migrates to the new version. This migration IMO should be irreversible.
>>>>>> Beyond this point the operator will lose the ability to downgrade which 
>>>>>> is
>>>>>> ok.
>>>>>>
>>>>>> Dinesh
>>>>>>
>>>>>> On Feb 20, 2023, at 10:40 AM, Jake Luciani <jak...@gmail.com> wrote:
>>>>>>
>>>>>> 
>>>>>> There has been progress on
>>>>>>
>>>>>> https://issues.apache.org/jira/plugins/servlet/mobile#issue/CASSANDRA-8928
>>>>>>
>>>>>> Which is similar to what datastax does for DSE. Would this be an
>>>>>> acceptable solution?
>>>>>>
>>>>>> Jake
>>>>>>
>>>>>> On Mon, Feb 20, 2023 at 11:17 AM guo Maxwell <cclive1...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> It seems “An alternative solution is to implement/complete
>>>>>>> CASSANDRA-8110
>>>>>>> <https://issues.apache.org/jira/browse/CASSANDRA-8110>” can give us
>>>>>>> more options if it is finished😉
>>>>>>>
>>>>>>> Branimir Lambov <blam...@apache.org>于2023年2月20日 周一下午11:03写道:
>>>>>>>
>>>>>>>> Hi everyone,
>>>>>>>>
>>>>>>>> There has been a discussion lately about changes to the sstable
>>>>>>>> format in the context of being able to abort a cluster upgrade, and the
>>>>>>>> fact that changes to sstables can prevent downgraded nodes from 
>>>>>>>> reading any
>>>>>>>> data written during their temporary operation with the new version.
>>>>>>>>
>>>>>>>> Most of the discussion is in CASSANDRA-18134
>>>>>>>> <https://issues.apache.org/jira/browse/CASSANDRA-18134>, and is
>>>>>>>> spreading into CASSANDRA-14277
>>>>>>>> <https://issues.apache.org/jira/browse/CASSANDRA-14227> and
>>>>>>>> CASSANDRA-17698
>>>>>>>> <https://issues.apache.org/jira/browse/CASSANDRA-17698>, none of
>>>>>>>> which is a good place to discuss the topic seriously.
>>>>>>>>
>>>>>>>> Downgradability is a worthy goal and is listed in the current
>>>>>>>> roadmap. I would like to open a discussion here on how it would be 
>>>>>>>> achieved.
>>>>>>>>
>>>>>>>> My understanding of what has been suggested so far translates to:
>>>>>>>> - avoid changes to sstable formats;
>>>>>>>> - if there are changes, implement them in a way that is
>>>>>>>> backwards-compatible, e.g. by duplicating data, so that a new version 
>>>>>>>> is
>>>>>>>> presented in a component or portion of a component that legacy nodes 
>>>>>>>> will
>>>>>>>> not try to read;
>>>>>>>> - if the latter is not feasible, make sure the changes are only
>>>>>>>> applied if a feature flag has been enabled.
>>>>>>>>
>>>>>>>> To me this approach introduces several risks:
>>>>>>>> - it bloats file and parsing complexity;
>>>>>>>> - it discourages improvement (e.g. CASSANDRA-17698 is no longer a
>>>>>>>> LHF ticket once this requirement is in place);
>>>>>>>> - it needs care to avoid risky solutions to address
>>>>>>>> technical issues with the format versioning (e.g. staying on 
>>>>>>>> n-versions for
>>>>>>>> 5.0 and needing a bump for a 4.1 bugfix might require porting over 
>>>>>>>> support
>>>>>>>> for new features);
>>>>>>>> - it requires separate and uncoordinated solutions to the problem
>>>>>>>> and switching mechanisms for each individual change.
>>>>>>>>
>>>>>>>> An alternative solution is to implement/complete CASSANDRA-8110
>>>>>>>> <https://issues.apache.org/jira/browse/CASSANDRA-8110>, which
>>>>>>>> provides a method of writing sstables for a target version. During
>>>>>>>> upgrades, a node could be set to produce sstables corresponding to the
>>>>>>>> older version, and there is a very straightforward way to implement
>>>>>>>> modifications to formats like the tickets above to conform to its
>>>>>>>> requirements.
>>>>>>>>
>>>>>>>> What do people think should be the way forward?
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Branimir
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>> you are the apple of my eye !
>>>>>>>
>>>>>> --
>>>>>> http://twitter.com/tjake
>>>>>>
>>>>>>
>>>>
>>>> --
>>>>
>>>> Henrik Ingo
>>>>
>>>> c. +358 40 569 7354
>>>>
>>>> w. www.datastax.com
>>>>
>>>> <https://www.facebook.com/datastax>  <https://twitter.com/datastax>
>>>> <https://www.linkedin.com/company/datastax/>
>>>> <https://github.com/datastax/>
>>>>
>>>>
>>>
>>> --
>>>
>>> Henrik Ingo
>>>
>>> c. +358 40 569 7354
>>>
>>> w. www.datastax.com
>>>
>>> <https://www.facebook.com/datastax>  <https://twitter.com/datastax>
>>> <https://www.linkedin.com/company/datastax/>
>>> <https://github.com/datastax/>
>>>
>>>

Reply via email to