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

Caleb Rackliffe commented on CASSANDRA-14463:
---------------------------------------------

[~brandon.williams] [~e.dimitrova] Did the [new 
dtest|https://github.com/driftx/cassandra-dtest/commit/3df0ff6e88fcc55bd93e62261a6d7fe869199f6d]
 for this ever get committed?

> Prevent the generation of new tokens when using replace_address flag
> --------------------------------------------------------------------
>
>                 Key: CASSANDRA-14463
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14463
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Legacy/Distributed Metadata
>            Reporter: Vincent White
>            Assignee: Vincent White
>            Priority: Low
>             Fix For: 3.0.25, 3.11.11, 4.0.1, 4.1
>
>
> This is a follow up to/replacement of CASSANDRA-14073.
> The behaviour that I want to avoid is someone trying to replace a node with 
> the replace_address flag and mistakenly having that node listed in its own 
> seed list which causes the node to generate a new set of random tokens before 
> joining the ring. 
> Currently anytime an unbootstrapped node is listed in its own seed list and 
> initial_token isn't set in the yaml, Cassandra will generate a new set of 
> random tokens and join the ring regardless of whether it was replacing a 
> previous node or not. 
> We could simply check for this configuration and refuse to start but I it's 
> probably better (particularly for 3.0.X) if it's handled in the same manner 
> as skipping streaming with the allow_unsafe_replace flag that was introduced 
> in 3.X . This would still allow 3.0.X users the ability to re-bootstrap nodes 
> without needing to re-stream all the data to the node again, which can be 
> useful. 
> We currently handle replacing without streaming different;y between 3.0.X and 
> 3.X. In 3.X we have the allow_unsafe_replace JVM flag to allow the use of 
> auto_bootstrap: false in combination with the replace_address option.  But in 
> 3.0.X to perform the replacement of a node with the same IP address without 
> streaming I believe you need to:
>  * Set replace_address (because the address is already in gossip)
>  * Include the node in its own seed list (to skip bootstrapping/streaming)
>  * Set the initial_token to the token/s owned by the previous node (to 
> prevent it generating new tokens.
> I believe if 3.0.X simply refused to start when a node has itself in its seed 
> list and replace_address set this will completely block this operation. 
> Example patches to fix this edge case using allow_unsafe_replace:
>  
> ||Branch||
> |[3.0.x|https://github.com/apache/cassandra/compare/trunk...vincewhite:30-no_clobber]|
> |[3.x|https://github.com/apache/cassandra/compare/trunk...vincewhite:311-no_clobber]|



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

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to