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

David Capwell commented on CASSANDRA-16213:
-------------------------------------------

I left comments on the commit 
https://github.com/beobal/cassandra/commit/b33d3aaf01326e49bacda2410c0fa6fc17677ae5

To summarize I think these are the following changes

1) size of the patch
2) avoid injecting the host_id + token on startup, but keep the "empty" node in 
gossip as is.  On shadow round, query table to repopulate this in order to reply
3) removed the allowed state logic

For #1 it looks like this is only done by removing the explicit "empty" flags 
and replaced access with logic which tries to detect it based off symptoms 
(generation and version == 0, absents from gossip, etc.).  I personally feel 
this logic is justifiable as it makes it easy to see how/where we handle the 
logic, by scattering the handling it gets harder to see how its handled.

For #2 I am not sure why, would love to hear from you on what you are thinking. 
 I do love the extra comments but it isn't clear the motivation between the two 
versions.

[~samt] thanks for the review.  If it helps we can chat on slack tomorrow (or 
when you are free) and can summaries here after.

> Cannot replace_address /X because it doesn't exist in gossip
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-16213
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16213
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Cluster/Gossip, Cluster/Membership
>            Reporter: David Capwell
>            Assignee: David Capwell
>            Priority: Normal
>             Fix For: 4.0-beta
>
>
> We see this exception around nodes crashing and trying to do a host 
> replacement; this error appears to be correlated around multiple node 
> failures.
> A simplified case to trigger this is the following
> *) Have a N node cluster
> *) Shutdown all N nodes
> *) Bring up N-1 nodes (at least 1 seed, else replace seed)
> *) Host replace the N-1th node -> this will fail with the above
> The reason this happens is that the N-1th node isn’t gossiping anymore, and 
> the existing nodes do not have its details in gossip (but have the details in 
> the peers table), so the host replacement fails as the node isn’t known in 
> gossip.
> This affects all versions (tested 3.0 and trunk, assume 2.2 as well)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to