You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Yuki Morishita (JIRA)" <ji...@apache.org> on 2014/09/14 00:17:34 UTC

[jira] [Commented] (CASSANDRA-7450) Make repair -pr work within a datacenter

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

Yuki Morishita commented on CASSANDRA-7450:
-------------------------------------------

* I think it is better to name {{getPrimaryRangeForEndpointWithinDC}} than {{getLocalPrimaryRangeForEndpoint}}
* I think you can simplify this to include {{Range}} s that given {{referenceEndpoint}} is not the primary endpoint but is replica for that range. That is:

{code}
List<InetAddress> endpoints = strategy.calculateNaturalEndpoints(token, metadata);
if (endpoints.size() > 0 && !endpoints.get(0).equals(ep) && endpoints.contains(ep))
    primaryRanges.add(new Range<>(metadata.getPredecessor(token), token));
{code}

* Wrapped range is handled in {{Range}} object so you don't need last {{for}} loop. (Sorry if I told it wrong.)
* Nice if you can add unit test for {{getLocalPrimaryRangeForEndpoint}} to StorageServiceServerTest like {{getPrimaryRangeForEndpoint}}.

> Make repair -pr work within a datacenter
> ----------------------------------------
>
>                 Key: CASSANDRA-7450
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7450
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Sylvain Lebresne
>            Assignee: Paulo Motta
>              Labels: bootcamp, repair
>             Fix For: 2.1.1
>
>         Attachments: 2.1-CASSANDRA-7450-v1.txt
>
>
> As was noticed in CASSANDRA-7317, using '-pr' alongside '-local' for repair doesn't really work properly, and disabling the combination was definitively the right short time fix. However, the main goal of '-pr' is to make it easy to repair a full cluster without doing any duplication of work. Doing the same only within a data-center is obviously desirable.
> I think a reasonably simple solution would be modify the behavior of '-pr' when it's limited to only one DC. If applied to nodeX in dcY, instead of repairing only the "primary" range of nodeX for the whole ring, we'll repair that range but also all ranges that are "primary" for a node not in dcY and for which nodeX is the first node of dcY found in ring order. Basically we'll ensure that running 'repair -local -pr' on every nodes of a given DC will repair all ranges for the nodes of that DC without repairing the same range twice.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)