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

Stefania commented on CASSANDRA-9765:
-------------------------------------

The reason why {{!isFatClient()}} is false and doesn't trigger the exception is 
because the state is SHUTDOWN rather than one of the DEAD states (REMOVING, 
REMOVED, LEFT and HIBERNATE). It seems that we cannot determine if a SHUTDOWN 
node was a fat client and therefore isFatClient() should not check if shutdown 
nodes are members, since they aren't. For fear of breaking stuff I added a new 
method that excludes SHUTDOWN nodes and I called it isLiveFatClient().

I've attached patch for 2.0 and a dtest that clearly reproduces the problem 
with the existing 2.0 code.

[~jbellis], please confirm you are happy with the fix in 2.0, we can always 
rollback CASSANDRA-7939 and only fix in later revisions. We also need a 
reviewer. 

> checkForEndpointCollision fails for legitimate collisions
> ---------------------------------------------------------
>
>                 Key: CASSANDRA-9765
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9765
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Richard Low
>            Assignee: Stefania
>             Fix For: 2.0.17
>
>
> Since CASSANDRA-7939, checkForEndpointCollision no longer catches a 
> legitimate collision. Without CASSANDRA-7939, wiping a node and starting it 
> again fails with 'A node with address %s already exists', but with it the 
> node happily enters joining state, potentially streaming from the wrong place 
> and violating consistency.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to