Hi,

Just wanted to mention that we already have some config related to
duplicate keys in cassandra.yaml. (That doesn’t mean we cannot
extend/improve things further, of course)
>From our docs:

CASSANDRA-17379 <https://issues.apache.org/jira/browse/CASSANDRA-17379> was
opened to improve the user experience and deprecate the overloading. By
default, we refuse starting Cassandra with a config containing both old and
new config keys for the same parameter. Start Cassandra with
-Dcassandra.allow_new_old_config_keys=true to override. For historical
reasons duplicate config keys in cassandra.yaml are allowed by default,
start Cassandra with -Dcassandra.allow_duplicate_config_keys=false to
disallow this. Please note that key_cache_save_period, row_cache_save_period
, counter_cache_save_period will be affected only by
-Dcassandra.allow_duplicate_config_keys.

There are people who actively use the overloading in their environments so
backward compatibility is important.

Best regards,
Ekaterina

On Wed, 23 Jul 2025 at 4:05, Johnny Miller <johnny.p.mil...@gmail.com>
wrote:

> That's a really good idea! I have updated the CEP to include this
> duplicate_key_policy functionality and corresponding test scenarios.
>
> On Tue, 22 Jul 2025 at 16:35, Patrick McFadin <pmcfa...@gmail.com> wrote:
>
>> Another hit from the DevOps request backlog. I'm glad this has
>> finally turned into something formal. This will make CI/CD much easier. One
>> thing I hope this fosters more of is the sharing of configs. For example,
>> "here are my recommended storage settings for EBS."
>>
>> The CEP aborts on any duplicate key. For the people doing GitOps, there
>> will be a need for layering a read-only baseline `cassandra.yaml` with
>> environment-specific or secret files. This is exactly the way Argo CD/Helm
>> handles value precedence. This is typical in cloud native environments. I
>> propose a modification that allows an *opt-in* policy switch:
>>
>>     duplicate_key_policy: { ABORT (default) | LAST_WINS | WARN }
>>
>> * ABORT  – current behaviour, startup fails on duplicates.
>> * WARN   – duplicates allowed, last key wins, but every override is
>> logged.
>> * LAST_WINS – same as WARN, but without log
>>
>> On Mon, Jul 21, 2025 at 7:01 AM Josh McKenzie <jmcken...@apache.org>
>> wrote:
>>
>>> I suppose the only concern would be maintaining this version in
>>> alignment with what's going into the main cassandra.yaml as part of the
>>> regular development.
>>>
>>> Seems like it'd be relatively easy to script something that'll generate
>>> modularized config files based on the reference cassandra.yaml by
>>> classifying different parameters based on file grouping. Not to scope creep
>>> or add on to the CEP or anything, just thinking out loud; as follow up work
>>> it could be useful.
>>>
>>> From a technical perspective having a bi-directional sync that'd just
>>> dump things into a "overflow" file from monolithic -> modular, and tacking
>>> on at the end of cassandra.yaml under an overflow section for things not
>>> classified in the script from modular -> monolithic config shouldn't be too
>>> complex. If that proved stable, integrating that into the build process and
>>> even adding a checkstyle job target warning on non-classified configuration
>>> parameters could tighten the whole thing up and give us a minimally
>>> invasive way to support both through a transition.
>>>
>>> On Mon, Jul 21, 2025, at 9:41 AM, Johnny Miller wrote:
>>>
>>> I have added the section "Reference Example Configuration" - will see
>>> what the feedback on this is. I suppose the only concern would be
>>> maintaining this version in alignment with what's going into the main
>>> cassandra.yaml as part of the regular development.
>>>
>>> On Mon, 21 Jul 2025 at 15:24, Josh McKenzie <jmcken...@apache.org>
>>> wrote:
>>>
>>>
>>> That sounds useful to me.
>>>
>>> I'd like to see us move to "modularized by default"; our current config
>>> being 2839 lines of .yaml
>>> <https://github.com/apache/cassandra/blob/trunk/conf/cassandra.yaml> is
>>> a bad experience for both new and old users. Starting with examples of the
>>> new paradigm and then refactoring config out over time for the default
>>> config is a path forward I'd support.
>>>
>>> On Mon, Jul 21, 2025, at 9:18 AM, Johnny Miller wrote:
>>>
>>> One feature I was thinking of adding to the CEP was to have an example
>>> yaml config setup using the includes with the config grouped logically so
>>> people have a reference example in the conf? Would this be a good idea?
>>>
>>> On Fri, 18 Jul 2025 at 19:57, Johnny Miller <johnny.p.mil...@gmail.com>
>>> wrote:
>>>
>>> Hello 👋
>>>
>>> We would like to propose CEP-51: Support Include Semantics for
>>> cassandra.yaml for adoption by the community:
>>>
>>> https://cwiki.apache.org/confluence/display/CASSANDRA/CEP-51+Support+Include+Semantics+for+cassandra.yaml
>>>
>>> This CEP proposes adding completely optional include directives to
>>> Cassandra's configuration system, allowing users who need it to split their
>>> cassandra.yaml into multiple files for better security, organization, and
>>> deployment flexibility. No changes are made to the default cassandra.yaml,
>>> and this feature is entirely opt-in.
>>> The proposed include directives (include, include_if_exists, and
>>> include_dir) enable organizations to:
>>>
>>>    - Apply the principle of least privilege by separating sensitive
>>>    security configurations into files with restricted permissions
>>>    - Better organize large configuration files by logical subsystems
>>>    - Simplify configuration management in environments where different
>>>    teams manage different aspects of the cluster
>>>    - Follow established patterns already present in PostgreSQL, MySQL,
>>>    Redis, NGINX, and other widely-used systems
>>>
>>> Key design principles:
>>>
>>>    - Zero impact on users who don't use the feature
>>>    - No recursive includes (only the main cassandra.yaml can contain
>>>    include directives)
>>>    - No duplicate configuration keys allowed (each setting must appear
>>>    in exactly one file)
>>>    - Clear error messages for troubleshooting
>>>
>>> This enhancement addresses real operational challenges faced by
>>> organisations with strict security requirements or complex deployment
>>> needs, while maintaining complete backward compatibility and requiring no
>>> changes to existing deployments.
>>>
>>> Thanks in advance for your time and feedback. Please keep the discussion
>>> on this mailing list thread.
>>>
>>> Regards,
>>>
>>> Johnny
>>>
>>>
>>>
>>>

Reply via email to