Paulo Motta created CASSANDRA-11559:
---------------------------------------

             Summary: 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
            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
(v6.3.4#6332)

Reply via email to