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

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

[~bdeggleston] I totally agree on VirtualEndpoint vs Endpoint.

There are indeed not that many changes except for using this changed object 
where appropriate and initiating all the internal structures as required to 
make it work.

Wrt to changing the Cassandra _behaviour_ - clearly that was not the purpose of 
this ticket. This one is more of an infrastructure work to make the actual use 
of it later. For example, https://issues.apache.org/jira/browse/CASSANDRA-12344 
is going to rely on this one for solving node replacement issues when the 
replacement node has same IP. But I'm also sure there are a lot of other 
improvements that can be thought of further on, for instance, move 
endpointStatesMap fields into this new Endpoint object, to make it easier for 
Gossiper to handle this information.

I'm not yet overly familiar with the whole Cassandra to make other 
suggestions,:) but would totally appreciate if there are any. If there's an 
interest in improving other things that I don't know about (which is not that 
hard), then I'd love to hear it and would definitely open tickets for any 
suggestions.

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-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to