cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paulo Motta (JIRA)" <>
Subject [jira] [Created] (CASSANDRA-11559) Enhance node representation
Date Tue, 12 Apr 2016 23:09:25 GMT
Paulo Motta created CASSANDRA-11559:

             Summary: Enhance node representation
                 Key: CASSANDRA-11559
             Project: Cassandra
          Issue Type: Sub-task
          Components: Distributed Metadata
            Reporter: Paulo Motta
            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}} class, 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

View raw message