[ https://issues.apache.org/jira/browse/CASSANDRA-17292?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17489080#comment-17489080 ]
Caleb Rackliffe edited comment on CASSANDRA-17292 at 2/8/22, 7:39 PM: ---------------------------------------------------------------------- With CASSANDRA-15234 finally merged, I'm still planning on revamping my previous attempts at a new config structure. Our goals are the same here, i.e. to make the config more readable and discoverable. There are good arguments for different axes in our nesting at the global, feature, and sub-system level. Everything the database does touches some resource(s), but it doesn't mean we have to frame every option in that context. (Even if we did most things touch multiple resources.) There are things like encryption, that we probably want to continue to group in features space, although perhaps change slightly... {noformat} encryption: # document general concerns for internode encryption, including how parameters interact internode: ... # document general concerns for client encryption, including how parameters interact client: ... {noformat} ...and things like network that end up being much lower/protocol level, and might include things like protocol level back-pressure configuration... {noformat} network: internode: ... client: ... {noformat} ...but not feature level limits, like the compaction backlog size at which we abort streaming/repair. We can have a more readable config than we have today without complete logical consistency, especially if it affords us the opportunity to explain how the options for individual features and subsystems work together in our inline documentation. I'd like to start with an approach that favors feature grouping, given that I think the majority of our config is amenable to that, but then factor out pieces of that when and if it becomes the clearer option. (ex. It could end up being the case that having all our threading/SEDA options under one umbrella makes the most sense, and allows operators to think about CPU usage more naturally.) was (Author: maedhroz): With CASSANDRA-15234 finally merged, I'm still planning on revamping my previous attempts at a new config structure. Our goals are the same here, i.e. to make the config more readable and discoverable. There are good arguments for different axes in our nesting at the global, feature, and sub-system level. Everything the database does touches some resource(s), but it doesn't mean we have to frame every option in that context. (Even if we did most things touch multiple resources.) There are things like encryption, that we probably want to continue to group in features space, although perhaps change slightly... {noformat} encryption: internode: ... client: ... {noformat} ...and things like network that end up being much lower/protocol level, and might include things like protocol level back-pressure configuration... {noformat} network: internode: ... client: ... {noformat} ...but not feature level limits, like the compaction backlog size at which we abort streaming/repair. We can have a more readable config than we have today without complete logical consistency, especially if it affords us the opportunity to explain how the options for individual features and subsystems work together in our inline documentation. I'd like to start with an approach that favors feature grouping, given that I think the majority of our config is amenable to that, but then factor out pieces of that when and if it becomes the clearer option. (ex. It could end up being the case that having all our threading/SEDA options under one umbrella makes the most sense, and allows operators to think about CPU usage more naturally.) > Move cassandra.yaml toward a nested structure around major database concepts > ---------------------------------------------------------------------------- > > Key: CASSANDRA-17292 > URL: https://issues.apache.org/jira/browse/CASSANDRA-17292 > Project: Cassandra > Issue Type: Improvement > Components: Local/Config > Reporter: Caleb Rackliffe > Assignee: Caleb Rackliffe > Priority: Normal > Fix For: 5.x > > > Recent mailing list conversation (see "[DISCUSS] Nested YAML configs for new > features") has made it clear we will gravitate toward appropriately nested > structures for new parameters in {{cassandra.yaml}}, but from the scattered > conversation across a few Guardrails tickets (see CASSANDRA-17212 and > CASSANDRA-17148) and CASSANDRA-15234, there is also a general desire to > eventually extend this to the rest of {{cassandra.yaml}}. The benefits of > this change include those we gain by doing it for new features (single point > of interest for feature documentation, typed configuration objects, logical > grouping for additional parameters added over time, discoverability, etc.), > but one a larger scale. > This may overlap with ongoing work, including the Guardrails epic. Ideally, > even a rough cut of a design here would allow that to move forward in a > timely and coherent manner (with less long-term refactoring pain). > While these would have to be adjusted to CASSANDRA-15234 (probably after it > merges), there have been two proposals floated already for what this might > look like: > From [~maedhroz] - > https://github.com/maedhroz/cassandra/commit/49e83c70eba3357978d1081ecf500bbbdee960d8 > From [~benedict] - > https://github.com/belliottsmith/cassandra/commits/CASSANDRA-15234-grouping-ideas -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org