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
> <https://the-asf.slack.com/archives/CK23JSY2K/p1645033339547749> around
> this, but for anyone who doesn't follow that closely, I'd like to lobby
> more widely for my proposal in CASSANDRA-17292
> <https://issues.apache.org/jira/browse/CASSANDRA-17292> to eventually
> move cassandra.yaml toward a more nested structure.
>
> The proposal itself is here
> <https://github.com/maedhroz/cassandra/commit/450b920e0ac072cec635e0ebcb63538ee7f1fc5a>,
> 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 <https://issues.apache.org/jira/browse/CASSANDRA-17188>.
>
> Thanks!
>
>
>

Reply via email to