[ 
https://issues.apache.org/jira/browse/CASSANDRA-1066?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeremy Hanna updated CASSANDRA-1066:
------------------------------------

    Attachment: tentative-1066-changes.txt

Attaching a tentative way to handle this.  Most of the files modified are just 
renaming variables, but a few of them have more substantial changes.

Essentially, since there is a 1:1 relationship between replication strategies 
and keyspaces, it seems natural to add the replication strategy to the keyspace 
data structure.  That way the independent map of quasi-singletons of 
replication strategies can be removed and everything is handled by the keyspace 
metadata object.  That cleans up some other instances when things like removing 
keyspaces happens.  It also makes it nice when new keyspaces are created 
because it's all handled in one place - the system add keyspace call.  
Otherwise, we would run into the condition that the configuration for DSS would 
have to be done before the keyspace is created in order for it to have a 
working strategy.  Additionally, whenever we handle the alter keyspace 
functionality, it's nice to have that together.

Another approach would have been to handle initialization within the keyspace 
metadata class itself, but Gary seemed opposed to doing that in there.  That 
does mean that since the keyspace metadata object has the full strategy object, 
it will need to handle serialization/deserialization for it, but that would 
need to happen in any case where we tie the two together (strategy and KSM).

Gary - btw is there any reason why we're writing our own serialization code for 
the KSM object rather than just relying on Java's serialization?

I've commented out some things and haven't done the avro binding fully just 
because this is a rough patch to get feedback about the approach.

> DatacenterShardStrategy needs enforceable and keyspace based RF
> ---------------------------------------------------------------
>
>                 Key: CASSANDRA-1066
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1066
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Jeremy Hanna
>            Assignee: Jeremy Hanna
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: tentative-1066-changes.txt
>
>
> Currently, the DatacenterShardStrategy reads in a properties file - 
> datacenters.properties - to get a per-datacenter replication factor.  So any 
> keyspace that is using the DSS in the cluster is using that same properties 
> file to configure its replication factor.  The implementation doesn't take 
> into account the per-keyspace replication factor, but it is assumed that the 
> sum of all the datacenter RF values equals the per-keyspace replication value 
> that is part of the keyspace metadata.
> It seems that an improvement could be two-fold:
> 1. Enforce the replication factor for the keyspace as always equal the sum of 
> all the datacenter RF values.  Otherwise, if they aren't equal, bad things 
> (tm) can happen.
> 2. Make the datacenter RF values part of the keyspace metadata rather than a 
> global value.  Again, currently if any keyspace in the cluster is configured 
> to use DSS, it will be using the global DC RF values found in the properties 
> file.  An improvement could be to instead of having the properties file, 
> configure that on a per keyspace basis.  That would make the cluster more 
> multi-tenant friendly so it could be flexible with multiple keyspaces.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to