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

Sam Overton commented on CASSANDRA-4121:
----------------------------------------

bq. If we do go with these wrappers I'd prefer to keep it as thin as possible – 
no internal synchronization, no copies on inverse(). (I think the existing 
synchronizied wrapper around the bootstrapTokens BiMap saves us exactly one use 
of the explicit lock, in pendingRangeChanges. I'm fine with giving that up.)

I think given the changes to synchronization in TokenMetadata for 
CASSANDRA-3881 I will revisit synchronization in these BMVMaps - they can 
probably just rely on the ReadWriteLock in TMD. Re: "no copies on inverse()" - 
unmodifiableMultimap just makes the returned inverse map immutable, there is no 
copy.

bq. I think the code reads better with, than without them, but I can understand 
the argument for keeping them "thin". Sam?

I do think these wrappers are useful. It cuts down on the size of the interface 
that TMD has to provide. Looking up the endpoint to tokens mapping in both 
directions is useful and we already use the reverse mapping of bootstrapTokens 
in SS.calculatePendingRanges(). I would be tempted to make 
TMD.getEndpointToTokenMapForReading return the BMVMap too (currently it copies 
into a Multimap).

                
> TokenMetadata supports multiple tokens per host
> -----------------------------------------------
>
>                 Key: CASSANDRA-4121
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4121
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: Core
>            Reporter: Sam Overton
>            Assignee: Sam Overton
>              Labels: vnodes
>             Fix For: 1.2
>
>
> _Edit0: Append patch information._
> h3. Patches
> ||Compare||Raw diff||Description||
> |[01_support_multiple_tokens_per_host|https://github.com/acunu/cassandra/compare/top-bases/p/4121/01_support_multiple_tokens_per_host...p/4121/01_support_multiple_tokens_per_host]|[01_support_multiple_tokens_per_host.patch|https://github.com/acunu/cassandra/compare/top-bases/p/4121/01_support_multiple_tokens_per_host...p/4121/01_support_multiple_tokens_per_host.diff]|Support
>  associating more than one token per node|
> ----
> _Note: These are branches managed with TopGit. If you are applying the patch 
> output manually, you will either need to filter the TopGit metadata files 
> (i.e. {{wget -O - <url> | filterdiff -x*.topdeps -x*.topmsg | patch -p1}}), 
> or remove them afterward ({{rm .topmsg .topdeps}})._

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to