[ 
https://issues.apache.org/jira/browse/CASSANDRA-620?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12802324#action_12802324
 ] 

Gary Dusbabek commented on CASSANDRA-620:
-----------------------------------------

Attached a newly rebased set of patches that address the points brought up by 
Jaakko.

1)  Then I think that replicas_ should come out of ARS and instead retrieve the 
replication factor on a per-table basis when needed.  This shook out nicely in 
the code, except the unit tests.

2) Made TMD.pendingRanges a ConcurrentMap.

3) I went ahead and made ARS.tokenMetadata_ private and removed the getter.  

4) Addressed in #673.

5) modified by chaining callbacks to possibly call a leaveRing callback.

6) DatabaseDescriptor will complain if any KeySpace entity is missing 
EndPointSnitch or ReplicaPlacementStrategy.  Likewise, StorageService will 
complain if a bogus table is passed into getReplicationStrategy.  TokenMetadata 
is the other place this could happen.  I believe the risk is mitigated through 
TMD.getPendingRangesMM().  Are there any specific places you're worried about?  
Many of the methods that now accept a 'table' parameter get that parameter from 
a call to DD.getNonSystemTables().  Those that don't and are called indirectly 
from a client should have had the keyspace parameter checked for validity 
during thrift validation.  I think we're pretty safe here.

> Add per-keyspace replication factor (possibly even replication strategy)
> ------------------------------------------------------------------------
>
>                 Key: CASSANDRA-620
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-620
>             Project: Cassandra
>          Issue Type: New Feature
>            Reporter: Jonathan Ellis
>            Assignee: Gary Dusbabek
>             Fix For: 0.6
>
>         Attachments: 
> 0001-push-replication-factor-and-strategy-into-table-exce.patch, 
> 0002-cleaned-up-as-much-as-possible-before-dealing-with-r.patch, 
> 0003-push-table-names-into-streaming-expose-TMD-in-ARS.patch, 
> 0004-fix-non-compiling-tests.patch, 
> 0005-introduce-table-into-pending-ranges-code.patch, 
> 0006-added-additional-testing-keyspace.patch, 
> 0007-modify-TestRingCache-to-make-it-easier-to-test-speci.patch, 
> 0008-push-endpoint-snitch-into-keyspace-configuration.patch, 
> 0009-make-TMD-private-in-ARS.patch, 
> 0010-fix-problems-with-bootstrapping.patch, 
> 0011-remove-replicas-from-ARS.patch, 
> 0012-ensure-that-unbootstrap-calls-onFinish-after-tables-.patch, 
> v1-patches.tgz
>
>
> (but partitioner may only be cluster-wide, still)
> not 100% sure this makes sense but it would allow maintaining system metadata 
> in a replicated-across-entire-cluster keyspace (without ugly special casing), 
> as well as making Cassandra more flexible as a shared resource for multiple 
> apps

-- 
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