+1 to making hidden properties explicit. No way to tell whether it's a mistake 
or not atm.

On Fri, Jan 24, 2025, at 9:36 AM, Štefan Miklošovič wrote:
> 
> 
> On Fri, Jan 24, 2025 at 3:27 PM Paulo Motta <pa...@apache.org> wrote:
>> > from time to time I see configuration properties in Config.java and they 
>> > are clearly not in cassandra.yaml. Not every property in Config is in 
>> > cassandra.yaml. I would like to know if there is some specific reason 
>> > behind that.
>> 
>> I think one of the original reasons was to "hide" advanced configs that are 
>> not meant to be updated, unless in very niche circumstances. However I think 
>> this has been extrapolated to non-advanced settings.
>> 
>> > Question related to that is if we could not have a build-time check that 
>> > all properties in Config have to be in cassandra.yaml and fail the build 
>> > if a property in Config does not have its counterpart in yaml.
>> 
>> Are you saying every configuration property should be commented-out, or do 
>> you think that every Config property should be specified in cassandra.yaml 
>> with their default uncomented ? One issue with that is that you could cause 
>> user confusion if you "reveal" a niche/advanced config that is not meant to 
>> be updated. I think this would be addressed by the @HiddenInYaml flag you 
>> are proposing in a later post.
> 
> Yes, then can stay hidden, but we should annotate it with @Hidden or similar. 
> As of now, if that property is not in yaml, we just don't know if it was 
> forgotten to be added or if we have not added it on purpose.
> 
> They can keep being commented out if they currently are. Imagine a property 
> in Config.java
> 
> public boolean my_cool_property = true;
> 
> and then this in cassandra.yaml
> 
> # my_cool_property: true
> 
> It is completely ok.
> 
> If "# my_cool_property: true" is NOT in cassandra.yaml, we might indeed add 
> it, also commented out. I think it would be quite easy to check against yaml 
> if there is a line starting on "# my_cool_property" or just on 
> "my_cool_property". Both cases would satisfy the check.
> 
>  
>> > There are dozens of properties in Config and I have a strong suspicion 
>> > that we missed to publish some to yaml so users do not even know such a 
>> > property exists and as of now we do not even know which they are.
>> 
>> I believe this is a problem. I think most properties should be in 
>> cassandra.yaml, unless they are very advanced or not meant to be updated.
>> 
>> Another tangential issue is that there are features/settings that don't even 
>> have a Config entry, but are just controlled by JVM properties.
>> 
>> I think that we should attempt to unify Config and jvm properties under a 
>> predictable structure. For example, if there is a YAML config 
>> enable_user_defined_functions, then there should be a respective JVM flag 
>> -Dcassandra.enable_user_defined_functions, and vice versa.
> 
> Yeah, good idea.
>  
>> 
>> On Fri, Jan 24, 2025 at 9:16 AM Štefan Miklošovič <smikloso...@apache.org> 
>> wrote:
>>> Hello,
>>> 
>>> from time to time I see configuration properties in Config.java and they 
>>> are clearly not in cassandra.yaml. Not every property in Config is in 
>>> cassandra.yaml. I would like to know if there is some specific reason 
>>> behind that.
>>> 
>>> Question related to that is if we could not have a build-time check that 
>>> all properties in Config have to be in cassandra.yaml and fail the build if 
>>> a property in Config does not have its counterpart in yaml.
>>> 
>>> There are dozens of properties in Config and I have a strong suspicion that 
>>> we missed to publish some to yaml so users do not even know such a property 
>>> exists and as of now we do not even know which they are.

Reply via email to