You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Brandon Williams (Jira)" <ji...@apache.org> on 2021/07/02 19:23:00 UTC

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

     [ https://issues.apache.org/jira/browse/CASSANDRA-11559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brandon Williams updated CASSANDRA-11559:
-----------------------------------------
    Status: Open  (was: Patch Available)

> Enhance node representation
> ---------------------------
>
>                 Key: CASSANDRA-11559
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11559
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: Legacy/Distributed Metadata
>            Reporter: Paulo Motta (Deprecated)
>            Assignee: Alex Lourie
>            Priority: Low
>
> 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
(v8.3.4#803005)

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