cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dinesh Joshi (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-11559) Enhance node representation
Date Thu, 28 Jun 2018 07:14:00 GMT


Dinesh Joshi commented on CASSANDRA-11559:

I like this idea on the whole. One comment is that a "Endpoint" may not have just one IP address.
This is especially true during streaming where a peer can have two potentially different IP
addresses. This is not adequately addressed by simply renaming {{InetAddressAndPort}} (See:
{{StreamSession}} diff here - []).
You want to address such use-cases to demonstrate the value of this refactor.



> Enhance node representation
> ---------------------------
>                 Key: CASSANDRA-11559
>                 URL:
>             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

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message