[ https://issues.apache.org/jira/browse/CASSANDRA-14557?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16553108#comment-16553108 ]
Joseph Lynch edited comment on CASSANDRA-14557 at 7/23/18 4:54 PM: ------------------------------------------------------------------- [~KurtG] I believe the current state of the patch is to provide the options and implement {{SimpleStrategy}}. We need CASSANDRA-14303 I believe to add support for {{NetworkTopologyStrategy}}. I think for CASSANDRA-14303 the default would only apply only if no datacenters were given in the declaration at all, e.g. { {{'class': 'NetworkTopologyStrategy'}} } would be equivalent to { {{'class': 'NetworkTopologyStrategy', 'default_datacenter_replication': 3}} }. The adding a datacenter flow is covered in CASSANDRA-14303 but briefly it relies on the autoexpansion only to happen at {{CREATE}} or {{ALTER}} time. If you don't supply {{default_datacenter_replication}} but do supply explicit datacenters everything works the same as in the past, if you do supply it then any datacenters that exist but are not specified in the {{CREATE/ALTER}} statement get that default value added. The minimum validation catches e.g. { {{'class': 'NetworkTopologyStrategy', 'default_datacenter_replication': 1}} } Removing a datacenter is slightly trickier because of the minimum rf validation (to remove a datacenter in the presence of {{default_datacenter_replication}} you have to provide an excluded datacenter with RF=0), but I think it will still work because the validation happens after we template out the replication map. was (Author: jolynch): [~KurtG] I believe the current state of the patch is to provide the options and implement {{SimpleStrategy}}. We need CASSANDRA-14303 I believe to add support for {{NetworkTopologyStrategy}}. I think for CASSANDRA-14303 the default would only apply only if no datacenters were given in the declaration at all, e.g. {{{'class': 'NetworkTopologyStrategy'}}} would be equivalent to {{{'class': 'NetworkTopologyStrategy', 'default_datacenter_replication': 3}}}. The adding a datacenter flow is covered in CASSANDRA-14303 but briefly it relies on the autoexpansion only to happen at {{CREATE}} or {{ALTER}} time. If you don't supply {{default_datacenter_replication}} but do supply explicit datacenters everything works the same as in the past, if you do supply it then any datacenters that exist but are not specified in the {{CREATE/ALTER}} statement get that default value added. The minimum validation catches e.g. {{{'class': 'NetworkTopologyStrategy', 'default_datacenter_replication': 1}}} Removing a datacenter is slightly trickier because of the minimum rf validation (to remove a datacenter in the presence of {{default_datacenter_replication}} you have to provide an excluded datacenter with RF=0), but I think it will still work because the validation happens after we template out the replication map. > Consider adding default and required keyspace replication options > ----------------------------------------------------------------- > > Key: CASSANDRA-14557 > URL: https://issues.apache.org/jira/browse/CASSANDRA-14557 > Project: Cassandra > Issue Type: Improvement > Components: Configuration > Reporter: Sumanth Pasupuleti > Assignee: Sumanth Pasupuleti > Priority: Minor > Labels: 4.0-feature-freeze-review-requested > Fix For: 4.0 > > Attachments: 14557-trunk.txt > > > Ending up with a keyspace of RF=1 is unfortunately pretty easy in C* right > now - the system_auth table for example is created with RF=1 (to take into > account single node setups afaict from CASSANDRA-5112), and a user can > further create a keyspace with RF=1 posing availability and streaming risks > (e.g. rebuild). > I propose we add two configuration options in cassandra.yaml: > # {{default_keyspace_rf}} (default: 1) - If replication factors are not > specified, use this number. > # {{required_minimum_keyspace_rf}} (default: unset) - Prevent users from > creating a keyspace with an RF less than what is configured > These settings could further be re-used to: > * Provide defaults for new keyspaces created with SimpleStrategy or > NetworkTopologyStrategy (CASSANDRA-14303) > * Make the automatic token [allocation > algorithm|https://issues.apache.org/jira/browse/CASSANDRA-13701?focusedCommentId=16095662&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16095662] > interface more intuitive allowing easy use of the new token allocation > algorithm. > At the end of the day, if someone really wants to allow RF=1, they simply > don’t set the setting. For backwards compatibility the default remains 1 and > C* would create with RF=1, and would default to current behavior of allowing > any RF on keyspaces. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org