cassandra-pr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bdeggleston <...@git.apache.org>
Subject [GitHub] cassandra pull request #224: 14405 replicas
Date Wed, 16 May 2018 22:04:36 GMT
Github user bdeggleston commented on a diff in the pull request:

    https://github.com/apache/cassandra/pull/224#discussion_r188786457
  
    --- 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 --
    
    Since replication factor changes don't really fall under any of the existing JIRAs, maybe
we should disable all rf changes (except transient increases) as part of the initial refactor,
and make a follow on jira to enable the other rf changes after the read and write path changes
are in. Then we'll be able to reason about them in isolation, and will be better equipped
to do the needed testing / tool updates.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: pr-unsubscribe@cassandra.apache.org
For additional commands, e-mail: pr-help@cassandra.apache.org


Mime
View raw message