cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sylvain Lebresne (JIRA)" <>
Subject [jira] [Updated] (CASSANDRA-2324) Repair transfers more data than necessary
Date Fri, 01 Apr 2011 15:01:07 GMT


Sylvain Lebresne updated CASSANDRA-2324:

    Attachment: 0001-Make-repair-operate-over-a-node-token-range.patch

Attached patch modify repair to operate on one token range at a time. Nodetool repair schedule
as many repair session than the node have ranges to perform a full node repair. Note that
this is more efficient than previously, since the neighbors of the node will only do a validation
compaction on the range they have in common with the node coordinating the repair (instead
of validating everything).

This moreover makes it trivial to add an option to nodetool so that the node only repair it's
primary range. That way, you can repair a full cluster by calling this operation on every
node and there is no duplication of work. The patch doesn't add this option yet though.

The patch is against trunk. Because the way we construct the merkleTree is fundamentally different,
the trees created by 0.7 cannot be compared to the ones created with this patch. The strategy
this patch adopts with respect to talking to 0.7 nodes is this:
  * If a 0.7 node asks for a merkleTree, since we are still able to do a full compaction validation,
we do it and answer with that.
  * Since a 0.7 node cannot do a merkleTree that would be ok for us, we simply exclude 0.7
nodes from the endpoints we ask merkleTree from.

I don't feel this is a trivially enough patch to go to the 0.7 branch.

> Repair transfers more data than necessary
> -----------------------------------------
>                 Key: CASSANDRA-2324
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.7.0
>            Reporter: Brandon Williams
>            Assignee: Sylvain Lebresne
>             Fix For: 0.7.5
>         Attachments: 0001-Make-repair-operate-over-a-node-token-range.patch
> To repro: 3 node cluster, 1M rows with -x KEYS and -l 2.  The index is enough
to make some mutations drop (about 20-30k total in my tests).  Repair afterwards will repair
a large amount of ranges the first time.  However, each subsequent run will repair the same
set of small ranges every time.  INDEXED_RANGE_SLICE in stress never fully works.  Counting
rows with sstablekeys shows there are 2M rows total as expected, however when trying to count
the indexed keys, I get exceptions like:
> {noformat}
> Exception in thread "main" Key out of order! DecoratedKey(101571366040797913119296586470838356016,
> DecoratedKey(12639574763031545147067490818595764132, 0bc414be3093348a2ad389ed28f18f0cc9a044b2e98587848a0d289dae13ed0ad479c74654900eeffc6236)
>         at
>         at
> {noformat}

This message is automatically generated by JIRA.
For more information on JIRA, see:

View raw message