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

Nick Bailey commented on CASSANDRA-1216:
----------------------------------------

After some more thinking I think there are two problems here.

 * The timeout for waiting on a stream to complete - An arbitrary timeout here 
is not the right way to do this. What we really need is the concept of stream 
progress. We should be able to verify that a stream is progressing or not and 
based on that retry it.  CASSANDRA-1438 kind of relates to this problem and 
could be modified to implement this.  

 * The timeout waiting for nodes to confirm replication - Ideally there could 
be no timeout here. The problem though is if a node that should be grabbing 
data goes down permanently, removeToken will wait forever.  I think it's 
reasonable to have some sort of timeout in this case. A log message/error can 
indicate which machines were being waited on for replication. An administrator 
should know if that machine went down or is still streaming. That will 
determine if repair needs to be run.  The alternative to this I guess would be 
periodically waking up and checking that the nodes we are waiting on are still 
alive.  That wouldn't be particularly hard to implement

I don't think returning immediately from the call is the right approach.  That 
is part of the reason why this ticket is created. In the case that replication 
fails somewhere, there is no feedback to the user.  At least timing out 
eventually provides information about which machines we think failed to 
replicate data.  

As far as multiple remove calls and the coordinator going down.  I think there 
should be a 'force' option in the case the coordinator goes down and you 
believe the rest of the nodes completed the operation.  To prevent multiple 
calls to removeToken there should just be a check to make sure the coordinator 
is dead before another call can be performed.

So besides those few changes above, I think we should either implement this 
part way with a time out for stream replication or postpone completion here 
until we add the concept of stream progress.


> 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
>    Affects Versions: 0.7 beta 1
>            Reporter: Jonathan Ellis
>            Assignee: Nick Bailey
>             Fix For: 0.7 beta 2
>
>         Attachments: 0001-Add-callbacks-to-streaming.patch, 
> 0002-Modify-removeToken-to-be-similar-to-decommission.patch, 
> 0003-Fixes-to-old-tests.patch, 0004-Additional-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