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

Gary Dusbabek commented on CASSANDRA-1216:
------------------------------------------

RemoveTest needs some cleanup.
* ReplicationSink doesn't need callCount
* NotificationSink doesn't need hitList
* testRemoveToken and testStartRemoving abuse Gossiper.start().  Consider 
adding a method to Gossiper that initializes the epstate for a given node.  
E.g.: initializeNodeUnsafe(InetAddr addr, int generation).
* (minor nit) I wish there were a way to assert that tmd.getLeavingNodes() 
actually has nodes in it.
* all the methods throw UnknownHostException, but don't need to (IOException 
covers it)
* testStartRemoving should assert preconditions before calling ss.onChange (it 
also makes the same assertion twice).

StorageService:
* (minor nit) a comment describing the distinction between the leaving and 
removing constants.
* SS.removeToken() shouldn't throw a RuntimeException, as the client won't know 
what to make of it.  Declare an exception in the interface and throw it in the 
impl.  I imagine this will be a fairly common case (e.g.: when a node is down).
* SS.setReplicatingNodes and clearReplicatingNodes can be inlined into 
removeToken. It saves a few lines and obviates a local var.
* SS.replicateTables should probably be merged into SS.restoreReplicaCount.

Was the intent that SS.replicateTables block until the files are transferred?  
Because it doesn't.  AFAICT it blocks until the first ack comes back from each 
source node, which is a good indication that streaming has started, but not 
that it is finished.

I couldn't verify that the callbacks are ever called.  That happens on the 
READ_RESPONSE stage and afaict, none of the streaming code path ever puts a 
task there.  That's a painful interface to follow though, so I might be wrong.

> removetoken drops node from ring before re-replicating its data is finished
> ---------------------------------------------------------------------------
>
>                 Key: CASSANDRA-1216
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1216
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Jonathan Ellis
>            Assignee: Nick Bailey
>             Fix For: 0.7 beta 2
>
>         Attachments: 
> 0001-Modify-removeToken-to-be-similar-to-decommission.patch, 
> 0002-Fixes-to-old-tests.patch, 
> 0003-Additional-unit-tests-for-removeToken.patch
>
>
> this means that if something goes wrong during the re-replication (e.g. a 
> source node is restarted) there is (a) no indication that anything has gone 
> wrong and (b) no way to restart the process (other than the Big Hammer of 
> running repair)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to