[
https://issues.apache.org/jira/browse/CASSANDRA-18357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17703734#comment-17703734
]
Stefan Miklosovic commented on CASSANDRA-18357:
-----------------------------------------------
[~aleksey] what do you think? PR is at the bottom of the description.
> Make nodetool describecluster print all configuration parameters of topology
> strategies
> ---------------------------------------------------------------------------------------
>
> Key: CASSANDRA-18357
> URL: https://issues.apache.org/jira/browse/CASSANDRA-18357
> Project: Cassandra
> Issue Type: Improvement
> Reporter: Stefan Miklosovic
> Assignee: Stefan Miklosovic
> Priority: Normal
> Time Spent: 10m
> Remaining Estimate: 0h
>
> If there is a custom implementation of topology strategy, that strategy can
> accept more options, not only "class" and "replication factors for
> datacenters".
> I can have a replication strategy like this:
> {code}
> CREATE KEYSPACE ks WITH replication = {'class': 'CustomTopologyStrategy',
> 'datacenter1': '1', 'some_other_option': 'myoptionvalue'};
> {code}
> There is nothing which prevents users to put whatever options they want into
> a strategy as it is a map. Currently, we treat all options except "class" as
> names of datacenters and the current code is pretty much opinionated about
> that (KeyspaceParams class).
> However, when I create a keyspace like this:
> {code}
> CREATE KEYSPACE ks WITH replication = {'class': 'CustomTopologyStrategy',
> 'datacenter1': '1'};
> {code}
> nodetool describecluster command prints this:
> {code}
> Keyspaces:
> system_schema -> Replication class: LocalStrategy {}
> system -> Replication class: LocalStrategy {}
> test -> Replication class: SimpleStrategy {replication_factor=1}
> system_auth -> Replication class: SimpleStrategy
> {replication_factor=1}
> system_distributed -> Replication class: SimpleStrategy
> {replication_factor=3}
> system_traces -> Replication class: SimpleStrategy
> {replication_factor=2}
> testks -> Replication class: CustomTopologyStrategy {datacenter1=1}
> {code}
> But it should print:
> {code}
> testks -> Replication class: CustomTopologyStrategy {datacenter1=1,
> some_other_option=myoptionvalue}
> {code}
> The reason this is happening is that params are saved to
> system_schema.keyspaces into "replication" column and if I do not specify all
> parameters upon keyspace creation, they will not be persisted so describing
> it via nodetool will print only that.
> I want to see all options, even I have not set them explicitly in CQL CREATE
> KEYSPACE ...
> Another option would be to modify CQL like this:
> {code}
> CREATE KEYSPACE ks WITH replication = {'class': 'CustomTopologyStrategy',
> 'datacenter1': '1'} AND options = {'some_other_option': 'myoptionvalue'}
> {code}
> I would start with simply adding other options to that output. We can still
> modify it later to have "AND options ..." in CQL, it is OK to expand CQL like
> that if we decide. This ticket does not prevent that. Adding of "options" is
> more complicated. We would need to have another column for that in
> system_schema.keyspaces and (Java) drivers would need to be accommodated too.
> Too much work ...
> PR here: https://github.com/apache/cassandra/pull/2239/files
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]