Github user aweisberg commented on a diff in the pull request:
https://github.com/apache/cassandra/pull/224#discussion_r188784654
--- Diff:
src/java/org/apache/cassandra/cql3/statements/AlterKeyspaceStatement.java ---
@@ -96,7 +98,35 @@ private void warnIfIncreasingRF(KeyspaceMetadata ksm,
KeyspaceParams params)
StorageService.instance.getTokenMetadata(),
DatabaseDescriptor.getEndpointSnitch(),
params.replication.options);
- if (newStrategy.getReplicationFactor() >
oldStrategy.getReplicationFactor())
+
+ validateTransientReplication(oldStrategy, newStrategy);
+ warnIfIncreasingRF(oldStrategy, newStrategy);
+ }
+
+ private void validateTransientReplication(AbstractReplicationStrategy
oldStrategy, AbstractReplicationStrategy newStrategy)
+ {
+ if (oldStrategy.getReplicationFactor().trans == 0 &&
newStrategy.getReplicationFactor().trans > 0)
+ {
+ Keyspace ks = Keyspace.open(keyspace());
+ for (ColumnFamilyStore cfs: ks.getColumnFamilyStores())
+ {
+ if (cfs.viewManager.hasViews())
+ {
+ throw new ConfigurationException("Cannot use transient
replication on keyspaces using materialized views");
+ }
+
+ if (cfs.indexManager.hasIndexes())
+ {
+ throw new ConfigurationException("Cannot use transient
replication on keyspaces using secondary indexes");
+ }
+ }
+
+ }
+ }
+
+ private void warnIfIncreasingRF(AbstractReplicationStrategy
oldStrategy, AbstractReplicationStrategy newStrategy)
+ {
+ if (newStrategy.getReplicationFactor().full >
oldStrategy.getReplicationFactor().full)
--- End diff --
Huh, so because your quorum size increases you don't need to run even an
incremental repair? Is that always true. Have to think about it some more.
But... while it might be safe to do one increase, if you increased
transient replication twice in sequence and it didn't change th quorum size
could you get into trouble?
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]