I think we can easily support a hybrid world where we can support legacy
configuration safely while allowing new clusters from leveraging modern
configuration. And eventually "switch" to only support the new
configuration layout.

> If we make "a big cut" and old way of doing things would not be possible,
how are we going to treat this in dtests when we will have stuff for 3.11,
4 on old configs and 5 on newconfigs?

We can add a flag to override the default behavior of not parsing legacy
configuration files, and use these on dtests.

I added a new configuration layout proposal to <
https://issues.apache.org/jira/browse/CASSANDRA-17292> that groups
configurations by feature using simple nesting.  Non-complete example on: <
https://gist.github.com/pauloricardomg/4369f4b0dd8b84421a11ae61bf2d2c7e>

This proposal allows new features to leverage the new configuration layout
while supporting old configuration in the previous layout until we decide
to do a "big bang" migration of old configurations to the new layout.

Em ter., 22 de fev. de 2022 às 18:10, Ekaterina Dimitrova <
e.dimitr...@gmail.com> escreveu:

> DTests are one side but to be clear, the main reason for backward
> compatibility to be introduced in 15234 were not the tests but the users.
> That was a very clear requirement and in my mind this work also intends to
> have some backward compatibility? No?
> But DTests and even in-jvm are quite a valid concern!
>
> I am +1 to what Jeremiah said that Ideally we need to see new
> version/layout/format introduced at once. As I said before, I wouldn’t
> recommend to start adding new config as per the future version potential
> work now so we don’t change config twice. I find this confusing, even if I
> understand that the intention to make this was not to have to change new
> config soon. But in my mind it is about the bigger picture and not about
> small bites.
>
>  On the other hand, if there is backward compatibility and new and old
> config file (I like the idea of v1, v2, etc) then It shouldn’t be a concern
> to change those new parameters in next version. I fear that otherwise we
> might get into confusion for both our users and our contributors. Also, I
> suspect we will have the old one still compatible but only the new one
> in-tree for new development?
>
> On Tue, 22 Feb 2022 at 15:53, Stefan Miklosovic <
> stefan.mikloso...@instaclustr.com> wrote:
>
>> I want to add that to, however, on the other hand, we also do have
>> dtests in Python and they need to run with old configs too. That is
>> what Ekaterina was doing - supporting old configuration while
>> introducing new one. If we make "a big cut" and old way of doing
>> things would not be possible, how are we going to treat this in dtests
>> when we will have stuff for 3.11, 4 on old configs and 5 on new
>> configs?
>>
>> On Tue, 22 Feb 2022 at 21:48, Stefan Miklosovic
>> <stefan.mikloso...@instaclustr.com> wrote:
>> >
>> > +1 to what Patrick says.
>> >
>> > On Tue, 22 Feb 2022 at 21:40, Patrick McFadin <pmcfa...@gmail.com>
>> wrote:
>> > >
>> > > I'm going to put up a red flag of making config file changes of this
>> scale on a dot release. This should really be a 5.0 consideration.
>> > >
>> > > With that, I would propose a #5. 5.0 nodes will only read the new
>> config files and reject old config files. If any of you went through the
>> config file changes from Apache HTTPd 1.3 -> 2.0 you know how much of a
>> lifesaver that can be for ops. Make it a part of the total upgrade to a new
>> major version, not a radical change inside of a dot version, and make it a
>> clean break. No "legacy config" laying around. That's just a recipe for
>> surprises later if there are new required config values and somebody
>> doesn't even realize they have some old 4.x yaml files laying around.
>> > >
>> > > Patrick
>> > >
>> > > On Tue, Feb 22, 2022 at 11:51 AM Tibor Répási <tibor.rep...@anzix.org>
>> wrote:
>> > >>
>> > >> Glad to be agree on #4. That feature could be add anytime.
>> > >>
>> > >> If a version element is added to the YAML, then it is not necessary
>> to change the filename, thus we could end up with #3. The value of the
>> version element could default to 1 in the first phase, which does not need
>> any change for legacy format configuration. New config format must include
>> version: 2. When in some later version the support for legacy configuration
>> is removed, the default for the version element could be changed to 2 or
>> removed.
>> > >>
>> > >> On 22. Feb 2022, at 19:30, Caleb Rackliffe <calebrackli...@gmail.com>
>> wrote:
>> > >>
>> > >> My initial preference would be something like combining #1 and #4.
>> We could add something like a simple "version: <1|2>" element to the YAML
>> that would eliminate any possible confusion about back-compat within a
>> given file.
>> > >>
>> > >> Thanks for enumerating these!
>> > >>
>> > >> On Tue, Feb 22, 2022 at 10:42 AM Tibor Répási <
>> tibor.rep...@anzix.org> wrote:
>> > >>>
>> > >>> Hi,
>> > >>>
>> > >>> I like the idea of having cassandra.yaml better structured, as an
>> operator, my primer concern is the transition. How would we change the
>> config structure from legacy to the new one during a rolling upgrade? My
>> thoughts on this:
>> > >>>
>> > >>> 1. Legacy and new configuration is stored in different files.
>> Cassandra will read the legacy file on startup if it exists, the new one
>> otherwise. May raise warning on startup when legacy was used.
>> > >>>    pros:
>> > >>>     - separate files for separate formats
>> > >>>     - clean and operator controlled switch to new format
>> > >>>     - already known procedure, e.g. change from PropertyFileSnitch
>> to GossipingPropertyFileSnitch
>> > >>>    cons:
>> > >>>     - name of the config file would change from cassandra.yaml to
>> something else (cassandra_v2.yaml, config.yaml ???)
>> > >>>     - would need considerable work to get config to the new format
>> > >>>     - format translation not solved
>> > >>>
>> > >>> 2. Offline configuration converter tool may be available to convert
>> legacy format to new one. During package upgrade, if a legacy config is
>> found, the upgrade process should convert the config file to the new format.
>> > >>>   pros:
>> > >>>     - seamless upgrade process
>> > >>>     - tool can be tested properly before
>> > >>>   cons:
>> > >>>     - may interact badly with configuration management tools
>> controlling the contents of cassandra.yaml
>> > >>>     - poor transparency for operators
>> > >>>
>> > >>> 3. Cassandra could read both formats, may warn on startup when
>> legacy format found.
>> > >>>     pros:
>> > >>>       - no filename change
>> > >>>       - operator controlled switch to new format
>> > >>>     cons:
>> > >>>       - higher complexity at implementation and testing
>> > >>>       - format translation not solved
>> > >>>
>> > >>> 4. An online tool, e.g. nodetool command to export the
>> configuration the Cassandra node is currently running with, with filtering
>> option to suppress default settings.
>> > >>>     pros:
>> > >>>       - such a nodetool command would be useful independently from
>> changing the config format, could be added before and support any format
>> > >>>       - the bare information is already available in
>> system_views.settings
>> > >>>       - could be combined with #1 or #3 to support the format
>> translation
>> > >>>     cons: ?
>> > >>>
>> > >>>
>> > >>> My favourite would be #3 + #4, while I would most dislike #2.
>> > >>>
>> > >>> Tibor
>> > >>>
>> > >>>
>> > >>> On 17. Feb 2022, at 23:13, Caleb Rackliffe <
>> calebrackli...@gmail.com> wrote:
>> > >>>
>> > >>> Hey everyone,
>> > >>>
>> > >>> There has already been some Slack discussion around this, but for
>> anyone who doesn't follow that closely, I'd like to lobby more widely for
>> my proposal in CASSANDRA-17292 to eventually move cassandra.yaml toward a
>> more nested structure.
>> > >>>
>> > >>> The proposal itself is here, and there has already been some inline
>> discussion, but feel free to drop any feedback there, in the Jira, or here,
>> depending on what you're most comfortable with.
>> > >>>
>> > >>> Given where we are in the lead-up to 4.1, I have no intention of
>> pushing to adopt any of this for existing config in that release. However,
>> what I think would be nice is if we could come to a rough consensus in time
>> to inform work on new parameters, like those we're planning to add in
>> CASSANDRA-17188.
>> > >>>
>> > >>> Thanks!
>> > >>>
>> > >>>
>> > >>
>>
>

Reply via email to