You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Alex Lourie (JIRA)" <ji...@apache.org> on 2018/02/22 03:42:03 UTC

[jira] [Commented] (CASSANDRA-11559) Enhance node representation

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

Alex Lourie commented on CASSANDRA-11559:
-----------------------------------------

I'm going to take a swing at this one. 

I'm going to tentatively call the interface IVirtualEndpoint (but clearly open to other suggestions), and will start using the implementation in all instances instead of InetAddressAndPort where relevant. I'd love to hear other's opinions before I go too deep into refactoring spree.

 

Thanks!

> Enhance node representation
> ---------------------------
>
>                 Key: CASSANDRA-11559
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11559
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: Distributed Metadata
>            Reporter: Paulo Motta
>            Assignee: Alex Lourie
>            Priority: Minor
>
> We currently represent nodes as {{InetAddress}} objects on {{TokenMetadata}}, what causes difficulties when replacing a node with the same address (see CASSANDRA-8523 and CASSANDRA-9244).
> Since CASSANDRA-4120 we index hosts by {{UUID}} in gossip, so I think it's time to move that representation to {{TokenMetadata}}.
> I propose representing nodes as {{InetAddress, UUID}} pairs on {{TokenMetadata}}, encapsulated in a {{VirtualNode}} interface, so it will backward compatible with the current representation, while still allowing us to enhance it in the future with additional metadata (and improved vnode handling) if needed.
> This change will probably affect interfaces of internal classes like {{TokenMetadata}} and {{AbstractReplicationStrategy}}, so I'd like to hear from integrators and other developers if it's possible to change these without major hassle or if we need to wait until 4.0.
> Besides updating {{TokenMetadata}} and {{AbstractReplicationStrategy}} (and subclasses),  we will also need to replace all {{InetAddress}} uses with {{VirtualNode.getEndpoint()}} calls on {{StorageService}} and related classes and tests. We would probably already be able to replace some {{TokenMetadata.getHostId(InetAddress endpoint)}} calls with {{VirtualNode.getHostId()}}.
> While we will still be dealing with {{InetAddress}} on {{StorageService}} in this initial stage, in the future I think we should pass {{VirtualNode}} instances around and only translate from {{VirtualNode}} to {{InetAddress}} in the network layer.
> Public interfaces like {{IEndpointSnitch}} will not be affected by this.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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