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

Jon Meredith commented on CASSANDRA-16422:
------------------------------------------

 Sorry for the delay in response.  I wondered about the DEAD_STATES list, but 
the REMOVING_TOKEN gave me pause.

Taking another look at the dead states list,

REMOVING_TOKEN - while removenode is happening, 
StorageService.restoreReplicaCount will be called on some instances, so seems 
like that would be good to finish before any changes to replication strategy.

REMOVED_TOKEN - after removenode has completed
STATUS_LEFT - after decommission or assassinate has completed

HIBERNATE - either when replacing a host with the same IP address while the 
node boostraps itself
            or on a node started with system property cassandra.join_ring=false 
which waits indefinitely until the JMX call to join the ring.

The HIBERNATE case is the more difficult one.  It would be possible to start a 
node with cassandra.join_ring=false, then terminate it and be unable to alter 
keyspaces until it expired. However it also covers replacing nodes with the 
same address, although they should not trigger any range movement.

I've pushed a commit that expands ignoring unreachable states to include 
HIBERNATE, REMOVED_TOKEN and STATUS_LEFT.


> Unable to ALTER KEYSPACE while decommissioned/assassinated nodes are in gossip
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-16422
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16422
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Consistency/Bootstrap and Decommission
>            Reporter: Jon Meredith
>            Assignee: Jon Meredith
>            Priority: Normal
>             Fix For: 4.0-beta
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> As part of Transient Replication added in CASSANDRA-14404, {{ALTER KEYSPACE}} 
> had a validation check added to verify no range movement was taking place.
> The check requires all nodes to be in {{NORMAL}} state. When a node is 
> decommissioned or assassinated then it will remain in gossip for 3 days in 
> {{LEFT}} state (by default), preventing any keyspace alteration until it has 
> expired from gossip, even though it is safe to make the change.
> The validation condition should be changed to all nodes being in {{NORMAL}} 
> or {{LEFT}} state instead.



--
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