cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paulo Motta (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-8523) Writes should be sent to a replacement node while it is streaming in data
Date Fri, 29 Jul 2016 20:18:20 GMT


Paulo Motta commented on CASSANDRA-8523:

Thanks for taking a look! Created CASSANDRA-12344 to follow-up with support for this when
the replacement node has the same address as the original node.

Rebased patch and dtests as well as merged up to 3.0+. All patches and CI results available


There were some minor merge conflicts on 3.0, and a slightly larger conflict on 3.9 due to
CASSANDRA-10134, so I did some refactoring in the 3.9+ version to move most of the logic to
{{prepareForReplacement}}. Can you take another look [~rlow]?

Dtest PR created [here|].

While this is marked an improvement and would theoretically only go to trunk, this limitation
is pretty counter-intuitive and probably hurts many users in the wild, and since the changeset
is relatively small and self-contained, I think it could be interpreted as a bugfix and perhaps
go on 2.2+ or maybe 3.0+. WDYT [~brandon.williams] [~jkni] ?

> Writes should be sent to a replacement node while it is streaming in data
> -------------------------------------------------------------------------
>                 Key: CASSANDRA-8523
>                 URL:
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Richard Wagner
>            Assignee: Paulo Motta
>             Fix For: 2.1.x
> In our operations, we make heavy use of replace_address (or replace_address_first_boot)
in order to replace broken nodes. We now realize that writes are not sent to the replacement
nodes while they are in hibernate state and streaming in data. This runs counter to what our
expectations were, especially since we know that writes ARE sent to nodes when they are bootstrapped
into the ring.
> It seems like cassandra should arrange to send writes to a node that is in the process
of replacing another node, just like it does for a nodes that are bootstraping. I hesitate
to phrase this as "we should send writes to a node in hibernate" because the concept of hibernate
may be useful in other contexts, as per CASSANDRA-8336. Maybe a new state is needed here?
> Among other things, the fact that we don't get writes during this period makes subsequent
repairs more expensive, proportional to the number of writes that we miss (and depending on
the amount of data that needs to be streamed during replacement and the time it may take to
rebuild secondary indexes, we could miss many many hours worth of writes). It also leaves
us more exposed to consistency violations.

This message was sent by Atlassian JIRA

View raw message