cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paulo Motta (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-9143) Improving consistency of repairAt field across replicas
Date Wed, 24 Aug 2016 22:55:20 GMT


Paulo Motta commented on CASSANDRA-9143:

bq. Since sstables compacted since the beginning of a repair are excluded from anticompaction,
normal compaction is enough to create large inconsistencies of the data each node considers
repaired. This will cause repaired data to be considered unrepaired, which will cause a lot
of unnecessary streaming on the next repair.

While this is a relevant problem, it sounds slightly different from the original problem description,
which is to improve the consistency of the repairedAt field, which can become inconsistent
when a node fails mid-anti-compaction at the end of the parent repair session. Do you plan
to tackle only the original problem, or also the problem of losing repair information from
compacted sstables during repair (which is a bit harder problem)?

bq. We do the anticompaction up front, but put the anticompacted data into the pending bucket.

How do you plan to perform anti-compaction up-front? As Marcus pointed out, we defer anti-compaction
to the end of the parent repair session to avoid re-anti-compacting multi-range sstables as
repair progresses, so we need to have a strategy here to avoid or minimize that. But we could
perhaps let operators trade-off increased I/O for more accurate repair information with anti-compaction
check-points during long-running repairs.

So I propose we start with the original idea of adding a 2PC to anti-compaction as suggested
in the ticket description and perhaps on the top of that pursue anti-compaction checkpoints/hints
in separate ticket?

> Improving consistency of repairAt field across replicas 
> --------------------------------------------------------
>                 Key: CASSANDRA-9143
>                 URL:
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: sankalp kohli
>            Assignee: Blake Eggleston
>            Priority: Minor
> We currently send an anticompaction request to all replicas. During this, a node will
split stables and mark the appropriate ones repaired. 
> The problem is that this could fail on some replicas due to many reasons leading to problems
in the next repair. 
> This is what I am suggesting to improve it. 
> 1) Send anticompaction request to all replicas. This can be done at session level. 
> 2) During anticompaction, stables are split but not marked repaired. 
> 3) When we get positive ack from all replicas, coordinator will send another message
called markRepaired. 
> 4) On getting this message, replicas will mark the appropriate stables as repaired. 
> This will reduce the window of failure. We can also think of "hinting" markRepaired message
if required. 
> Also the stables which are streaming can be marked as repaired like it is done now. 

This message was sent by Atlassian JIRA

View raw message