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

Sylvain Lebresne commented on CASSANDRA-3483:
---------------------------------------------

bq. It addresses CASSANDRA-3807 by supporting fetch "consistency levels" 
(though only ONE is currently usable without patching)

I think a first issue is that current bootstrap does not fail if no node is 
alive for a given range, which arguably it should. I'm good with doing that, 
though it would be worth backporting to 1.0 too so it may be worth splitting 
that to a separate patch (or rather just create one for the fix in 1.0).

However, that does not solve the problem of bootstrap possibly breaking the 
consistency contract. The problem being that if we transfer a range from a node 
that happens to be lacking behind in term of consistency, and we end up 
replacing a node that was not lacking behind, we could break some consistency 
contracts. To fix that, I really only see only one solution right off the bat 
(which doesn't mean there isn't other): it is to ensure that for each range, we 
transfer it from (at least) the node we will replace for this range.

I believe the FetchConsistencyLevel of this patch is making an attempt to fix 
this by allowing to fetch from more than one node. While it does make it less 
likely to break consistency, unless we fetch from all nodes (and thus the one 
we'll replace), we cannot be sure we won't break the consistency level for 
people that say write at CL.ALL and read at CL.ONE. Overall, I fully agree this 
is a problem that we should fix someone, but I'm not sure the 
FetchConsistencyLevel is the right solution and even if it is it's a 
complicated enough problem that it's worth it's own ticket. I would agree that 
the problem with rebuild is a little bit different, but since anyway the patch 
introduce FCL without using it, let's keep that for later if that's ok.

bq. There is still some duplication between Bootstrapper.bootstrap() and 
StorageService.rebuild() in that both do the dance of iteration over tables to 
construct the final map. I am not really feeling that abstracting away that is 
a good idea to include in this ticket

I think it is, at least for a good chunk of it. It's not very complicated, it 
clearly improves code readability and since the patch already refactor that 
code I don't see a good reason to push that to later, especially if we agree 
it's worthwhile.

Attaching a v3 that 1) remove FetchConsistencyLevel for the reasons above and 
2) move most of the details of creating the multimaps in RangeStreamer.

                
> Support bringing up a new datacenter to existing cluster without repair
> -----------------------------------------------------------------------
>
>                 Key: CASSANDRA-3483
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3483
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Chris Goffinet
>            Assignee: Peter Schuller
>             Fix For: 1.1
>
>         Attachments: CASSANDRA-3483-0.8-prelim.txt, CASSANDRA-3483-1.0.txt, 
> CASSANDRA-3483-trunk-noredesign.txt, CASSANDRA-3483-trunk-rebase2.txt, 
> CASSANDRA-3483-trunk-refactored-v1.txt, CASSANDRA-3483-trunk-refactored-v2.txt
>
>
> Was talking to Brandon in irc, and we ran into a case where we want to bring 
> up a new DC to an existing cluster. He suggested from jbellis the way to do 
> it currently was set strategy options of dc2:0, then add the nodes. After the 
> nodes are up, change the RF of dc2, and run repair. 
> I'd like to avoid a repair as it runs AES and is a bit more intense than how 
> bootstrap works currently by just streaming ranges from the SSTables. Would 
> it be possible to improve this functionality (adding a new DC to existing 
> cluster) than the proposed method? We'd be happy to do a patch if we got some 
> input on the best way to go about it.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to