[
https://issues.apache.org/jira/browse/CASSANDRA-12222?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paulo Motta updated CASSANDRA-12222:
------------------------------------
Complexity: Challenging
Reviewers: Paulo Motta
> Per-node overrides for table settings
> -------------------------------------
>
> Key: CASSANDRA-12222
> URL: https://issues.apache.org/jira/browse/CASSANDRA-12222
> Project: Cassandra
> Issue Type: Improvement
> Components: Legacy/CQL
> Reporter: Sylvain Lebresne
> Priority: Low
> Labels: gsoc2021, mentor
>
> There is a few cases where it's convenient to set some table parameters on
> only one of a few nodes. For instance, it's useful for experimenting with
> settings like caching options, compaction, compression, read repair chance,
> gcGrace ... Another case is when you want to completely migrate to a new
> setting, but want to do that node-per-node (mainly useful when switching
> compaction strategy, see CASSANDRA-10898).
> I'll note that we can already do some of this through JMX for some of the
> settings as we have methods like
> {{ColumnFamilyStoreMBean.setCompactionParameters()}}, but:
> # parameters settings are initially set in CQL. Having to go to JMX for this
> sounds less consistent to me. The fact we have both a
> {{ColumnFamilyStoreMBean.setCompactionParameters()}} and a
> {{ColumnFamilyStoreMBean.setCompactionParametersJson()}} (as I assume the
> former one is inconvenient to use) is also proof to me than JMX ain't
> terribly appropriate.
> # I think this can be potentially useful for almost all table settings, but
> we don't expose JMX methods for all settings, and it would be annoying to
> have to. The method suggested below wouldn't have to be updated every time we
> add a new settings (if done right).
> # Changing options through JMX is not persistent across restarts. This may
> arguably be fine in some cases, but if you're trying to migrate your
> compaction strategy node per node, or want to experiment with a setting over
> a mediumish time period, it's mostly a pain.
> So what I suggest would be add node overrides in the normal table setting
> (which would be part of the schema as any other setting). In other words, if
> you want to set LCS for only one specific node, you'd do:
> {noformat}
> ALTER TABLE foo WITH node_overrides = { '192.168.0.1' : { 'compaction' : {
> 'class' : 'LeveledCompactionStrategy' } } }
> {noformat}
> I'll note that I already suggested that idea on CASSANDRA-10898, but as it's
> more generic than what that latter ticket is about, so creating its own
> ticket.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]