[ 
https://issues.apache.org/jira/browse/CASSANDRA-483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis updated CASSANDRA-483:
-------------------------------------

    Description: 
existing bootstrap code overengineers things a bit by allowing multiple nodes 
to bootstrap into the same span of the ring simultaneously.  but, this doesn't 
handle the case where one of them doesn't complete the bootstrap.  one possible 
response would be to transfer that node's span to one of the other new nodes, 
but then you're no longer evenly dividing the ring.  starting over with 
recomputed tokens for the remaining nodes is significantly complicated.

in short I think the right solution is to handle each node independently.   if 
only one node bootstraps into a ring segment at a time, nothing changes.  but 
if another node bootstraps in before the first finishes, we just say "okay" and 
send them each the data they would get _if it were the only node 
bootstrapping_.  So if one fails, we don't have to do any extra work.  If all 
succeed, the penalty is we transferred too much to some nodes but that will be 
taken care of by the existing cleanup compaction code.

(this does mean that we can't automatically pick tokens while a bootstrap is in 
progress, though, or it will pick the same one for both, which is undesireable. 
 but saying "if you want to bootstrap multiple nodes into the same ring span at 
once, you have to manually specify the tokens" seems reasonable to me.  
(especially since that was already the case under the old system, if you didn't 
want just random tokens.)

  was:
now that autobootstrap (CASSANDRA-438) is in, we have a couple other things 
worth fixing

 - a utility to mark a node "bootstrapped" so that people upgrading from 0.4 
won't have nodes that shouldn't bootstrap, try to do so
 - extra smartness for starting a new cluster -- what we want is to have the 
seed "bootstrap" each other node in turn, but i don't think it handles multiple 
nodes in overlapping ranges simultaneously right now.  (and we don't need it to 
-- we only need to tell nodes 3, 4, etc. to wait until node 2 is done.)



        Summary: clean up bootstrap code, 2  (was: more fun with autobootstrap)

> clean up bootstrap code, 2
> --------------------------
>
>                 Key: CASSANDRA-483
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-483
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Tools
>            Reporter: Jonathan Ellis
>            Assignee: Jonathan Ellis
>             Fix For: 0.5
>
>
> existing bootstrap code overengineers things a bit by allowing multiple nodes 
> to bootstrap into the same span of the ring simultaneously.  but, this 
> doesn't handle the case where one of them doesn't complete the bootstrap.  
> one possible response would be to transfer that node's span to one of the 
> other new nodes, but then you're no longer evenly dividing the ring.  
> starting over with recomputed tokens for the remaining nodes is significantly 
> complicated.
> in short I think the right solution is to handle each node independently.   
> if only one node bootstraps into a ring segment at a time, nothing changes.  
> but if another node bootstraps in before the first finishes, we just say 
> "okay" and send them each the data they would get _if it were the only node 
> bootstrapping_.  So if one fails, we don't have to do any extra work.  If all 
> succeed, the penalty is we transferred too much to some nodes but that will 
> be taken care of by the existing cleanup compaction code.
> (this does mean that we can't automatically pick tokens while a bootstrap is 
> in progress, though, or it will pick the same one for both, which is 
> undesireable.  but saying "if you want to bootstrap multiple nodes into the 
> same ring span at once, you have to manually specify the tokens" seems 
> reasonable to me.  (especially since that was already the case under the old 
> system, if you didn't want just random tokens.)

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