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]

Reply via email to