[
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