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

Brandon Williams commented on CASSANDRA-8336:
---------------------------------------------

bq. The shutting down node might as well set the version of the shutdown state 
to Integer.MAX_VALUE since receiving nodes will blindly use that.

Well, as I explained in an earlier comment, this isn't really much of an 
optimization, and if the nodes receive the RPC first, we have to modify it on 
the receiver anyway, so it seems cleaner to reuse markAsShutdown for both.

bq. Why does it increment the generation number? We call 
Gossiper.instance.start with a new generation number set to the current time so 
it would make sense to use that.

Because start calls maybeInitializeLocalState which won't actually add the 
current time heartbeat, since as the method says, it will only add the new 
state if the gossiper has never been started before (meaning we don't know our 
own state.)

bq. If hit 'Unable to gossip with any seeds’ on replace, it shuts down the 
gossiper. This throws an AssertionError in addLocalApplicationState since the 
local epState is null.

Hmm, probably the best thing to do there is change it from stop to 
stopForLeaving (though that method needs a better name now) since there's no 
point in sending shutdown notifications for a node that isn't a member.

> Quarantine nodes after receiving the gossip shutdown message
> ------------------------------------------------------------
>
>                 Key: CASSANDRA-8336
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8336
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Brandon Williams
>            Assignee: Brandon Williams
>             Fix For: 2.0.13
>
>         Attachments: 8336-v2.txt, 8336-v3.txt, 8336.txt
>
>
> In CASSANDRA-3936 we added a gossip shutdown announcement.  The problem here 
> is that this isn't sufficient; you can still get TOEs and have to wait on the 
> FD to figure things out.  This happens due to gossip propagation time and 
> variance; if node X shuts down and sends the message to Y, but Z has a 
> greater gossip version than Y for X and has not yet received the message, it 
> can initiate gossip with Y and thus mark X alive again.  I propose 
> quarantining to solve this, however I feel it should be a -D parameter you 
> have to specify, so as not to destroy current dev and test practices, since 
> this will mean a node that shuts down will not be able to restart until the 
> quarantine expires.



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

Reply via email to