> it is really handy to grep
> cassandra.yaml on some config key and you know the value instantly.

You can still do that

$ grep -A2 coordinator_read_size conf/cassandra.yaml
#     coordinator_read_size:
#         warn_threshold_kb: 0
#         abort_threshold_kb: 0

I was also arguing we should support nested and flat, so if your infra works 
better with flat then you could use

track_warnings.coordinator_read_size.warn_threshold_kb: 0
track_warnings.coordinator_read_size.abort_threshold_kb: 0

> On Nov 19, 2021, at 1:34 PM, David Capwell <dcapw...@apple.com> wrote:
> 
>> With the flat structure it turns into properties file - would it be
>> possible to support both formats - nested yaml and flat properties?
> 
> 
> For majority of our configs yes, but there are a subset where flat properties 
> is annoying
> 
> hinted_handoff_disabled_datacenters - set type, so you could do 
> hinted_handoff_disabled_datacenters=“a,b,c,d” but we would need to deal with 
> separators as the format doesn’t support
> seed_provider.parameters - this is a map type… so would need to do something 
> like seed_provider.parameters=“{\”a\”: \a\”}” …. Maybe we special case maps 
> as dynamic fields?  Then seed_provider.parameters.a=a?  We have 
> ParameterizedClass all over the code
> 
> So, as long as we define how to deal with java collections; we could in 
> theory support properties files (not arguing for that in this thread) as well 
> as system properties.
> 
> 
>> On Nov 19, 2021, at 1:22 PM, Jacek Lewandowski <lewandowski.ja...@gmail.com> 
>> wrote:
>> 
>> With the flat structure it turns into properties file - would it be
>> possible to support both formats - nested yaml and flat properties?
>> 
>> 
>> - - -- --- ----- -------- -------------
>> Jacek Lewandowski
>> 
>> 
>> On Fri, Nov 19, 2021 at 10:08 PM Caleb Rackliffe <calebrackli...@gmail.com>
>> wrote:
>> 
>>> If it's nested, "track_warnings" would still work if you're grepping around
>>> vim or less.
>>> 
>>> I'd have to concede the point about grep output, although there are tools
>>> like https://github.com/kislyuk/yq that could probably be bent to do what
>>> you want.
>>> 
>>> On Fri, Nov 19, 2021 at 1:08 PM Stefan Miklosovic <
>>> stefan.mikloso...@instaclustr.com> wrote:
>>> 
>>>> Hi David,
>>>> 
>>>> while I do not oppose nested structure, it is really handy to grep
>>>> cassandra.yaml on some config key and you know the value instantly.
>>>> This is not possible when it is nested (easily & fastly) as it is on
>>>> two lines. Or maybe my grepping is just not advanced enough to cover
>>>> this case? If it is flat, I can just grep "track_warnings" and I have
>>>> them all.
>>>> 
>>>> Can you elaborate on your last bullet point? Parsing layer ... What do
>>>> you mean specifically?
>>>> 
>>>> Thanks
>>>> 
>>>> On Fri, 19 Nov 2021 at 19:36, David Capwell <dcapw...@gmail.com> wrote:
>>>>> 
>>>>> This has been brought up in a few tickets, so pushing to the dev list.
>>>>> 
>>>>> CASSANDRA-15234 - Standardise config and JVM parameters
>>>>> CASSANDRA-16896 - hard/soft limits for queries
>>>>> CASSANDRA-17147 - Guardrails prototype
>>>>> 
>>>>> In short, do we as a project wish to move "new features" into nested
>>>>> YAML when the feature has "enough" to justify the nesting?  I would
>>>>> really like to focus this discussion on new features rather than
>>>>> retroactively grouping (leaving that to CASSANDRA-15234), as there is
>>>>> already a place to talk about that.
>>>>> 
>>>>> To get things started, let's start with the track-warning feature
>>>>> (hard/soft limits for queries), currently the configs look as follows
>>>>> (assuming 15234)
>>>>> 
>>>>> track_warnings:
>>>>>   enabled: true
>>>>>   coordinator_read_size:
>>>>>       warn_threshold: 10kb
>>>>>       abort_threshold: 1mb
>>>>>   local_read_size:
>>>>>       warn_threshold: 10kb
>>>>>       abort_threshold: 1mb
>>>>>   row_index_size:
>>>>>       warn_threshold: 100mb
>>>>>       abort_threshold: 1gb
>>>>> 
>>>>> or should this be "flat"
>>>>> 
>>>>> track_warnings_enabled: true
>>>>> track_warnings_coordinator_read_size_warn_threshold: 10kb
>>>>> track_warnings_coordinator_read_size_abort_threshold: 1mb
>>>>> track_warnings_local_read_size_warn_threshold: 10kb
>>>>> track_warnings_local_read_size_abort_threshold: 1mb
>>>>> track_warnings_row_index_size_warn_threshold: 100mb
>>>>> track_warnings_row_index_size_abort_threshold: 1gb
>>>>> 
>>>>> For me I prefer nested for a few reasons
>>>>> * easier to enforce consistency as the configs can use shared types;
>>>>> in the track warnings patch I had mismatches cross configs (warn vs
>>>>> warns, fail vs abort, etc.) before going nested, now everything reuses
>>>>> the same types
>>>>> * even though it is longer, things can be more clear how they are
>>> related
>>>>> * parsing layer can add support for mixed or purely flat depending on
>>>>> user preference (example:
>>>>> track_warnings.row_index_size.abort_threshold, using the '.' notation
>>>>> to represent nested structures)
>>>>> 
>>>>> Thoughts?
>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
>>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
>>>> For additional commands, e-mail: dev-h...@cassandra.apache.org
>>>> 
>>>> 
>>> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
For additional commands, e-mail: dev-h...@cassandra.apache.org

Reply via email to