[
https://issues.apache.org/jira/browse/CASSANDRA-17212?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17480375#comment-17480375
]
Benedict Elliott Smith edited comment on CASSANDRA-17212 at 1/22/22, 9:20 AM:
------------------------------------------------------------------------------
bq. To me grouping based off feature is the only way for a config to actually
be "discoverable", pulling bits and pieces out to other places because they are
"limits" would always break this in my mind.
In my experience this is a near-impossible task to do consistently with an
intuitive structure, as nobody really agrees what features should be called,
let alone their hierarchy.
For instance, once you have a {{query}} heading, should that then include
coordinator level configurations? timeouts? concurrency? CQL configurations?
caches? Logically it _could_ include half of the settings.
Many things also don't neatly fall under any feature, so we will fabricate
features for them: non-query timeouts cannot be grouped under {{query}}, so now
we probably _won't_ group query timeouts under {{query}} either, else it will
be inconsistent. But now both are inconsistent, there's no rules underpinning
it anymore.
This kind of grouping can also be more volatile - once a new setting (and
suitable grouping) is introduced, it more readily affects the decisions for the
existing hierarchy. This means this kind of layout probably needs a lot of
upfront work to produce a coherent grouping for the whole config file, to
demonstrate that it can be done in a manner everyone agrees on, and to avoid
lots of churn.
I think when I tried to produce groupings, your approach was what I tried
initially before deciding this approach was cleaner. Plus it has the added
benefit that a user that _doesn't_ know the config options (i.e. most users),
when encountering instability, will have good discoverability of dials that can
be modified to improve cluster health. I think this is a very underrated
benefit, as most users cannot afford teams of developers that are intimately
familiar with the codebase.
TL;DR: it's messy, arbitrary and inconsistent. Some upfront work needs to be
done to work out what it would like in totality.
was (Author: benedict):
bq. To me grouping based off feature is the only way for a config to actually
be "discoverable", pulling bits and pieces out to other places because they are
"limits" would always break this in my mind.
In my experience this is a near-impossible task to do consistently with an
intuitive structure, as nobody really agrees what features should be called,
let alone their hierarchy.
For instance, once you have a {{query}} heading, should that then include
coordinator level configurations? timeouts? concurrency? CQL configurations?
caches? Logically it _could_ include half of the settings.
Many things also don't neatly fall under any feature, so we will fabricate
features for them: non-query timeouts cannot be grouped under {{query}}, so now
we probably _won't_ group query timeouts under {{query}} either, else it will
be inconsistent. But now both are inconsistent, there's no rules underpinning
it anymore.
This kind of grouping can also be more volatile - once a new setting (and
suitable grouping) is introduced, it more readily affects the decisions for the
existing hierarchy. This means this kind of layout probably needs a lot of
upfront work to produce a coherent grouping for the whole config file, to
demonstrate that it can be done in a manner everyone agrees on, and to avoid
lots of churn.
I think when I tried to produce groupings, your approach was what I tried
initially before deciding this approach was cleaner. Plus it has the added
benefit that a user that _doesn't_ know the config options (i.e. most users),
when encountering instability, will have good discoverability of dials that can
be modified to improve cluster health. I think this is a very underrated
benefit, as most users cannot afford teams of developers that are intimately
familiar with the codebase.
> Migrate threshold for minimum keyspace replication factor to guardrails
> -----------------------------------------------------------------------
>
> Key: CASSANDRA-17212
> URL: https://issues.apache.org/jira/browse/CASSANDRA-17212
> Project: Cassandra
> Issue Type: New Feature
> Components: Feature/Guardrails
> Reporter: Andres de la Peña
> Priority: Normal
>
> The config property
> [{{minimum_keyspace_rf}}|https://github.com/apache/cassandra/blob/5fdadb25f95099b8945d9d9ee11d3e380d3867f4/conf/cassandra.yaml]
> that was added by CASSANDRA-14557 can be migrated to guardrails, for example:
> {code}
> guardrails:
> ...
> replication_factor:
> warn_threshold: 2
> abort_threshold: 3
> {code}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]