replace_address vs add+removenode

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

replace_address vs add+removenode

Ulrich Geilmann
Hi.

The documentation suggests to use the replace_address startup
parameter for replacing a dead node. However, it doesn't motivate why
this is superior over adding a new node and retiring the dead one
using nodetool removenode.
I assume it can be more efficient since the new node can take over the
exact tokens of the dead node. Are there any other differences?
Can it be reasonable to not use replace_address in the interest of
more uniform operations?

br, Ulrich
Reply | Threaded
Open this post in threaded view
|

Re: replace_address vs add+removenode

Robert Coli-3
On Wed, Apr 1, 2015 at 9:26 AM, Ulrich Geilmann <[hidden email]> wrote:
I assume it can be more efficient since the new node can take over the
exact tokens of the dead node. Are there any other differences?

That's the reason. You get one streaming operation ("bootstrap a new node with the same tokens as the old one") instead of two ("first, remove this node *and give its data to other nodes*. then, bootstrap a new node with new random tokens.").

=Rob
 
Reply | Threaded
Open this post in threaded view
|

Re: replace_address vs add+removenode

Anuj
In reply to this post by Ulrich Geilmann
In both cases node needs to bootstrap and get data frm other nodes. Removenode has an additional cost as it will lead to additional redistribution of tokens such that all data resides on remaining nodes as per the replication strategy. On removenode, remaining nodes will stream data amongst themselves so that ranges for which dead node was responsible is taken care.

Anuj Wadehra



From:"Ulrich Geilmann" <[hidden email]>
Date:Wed, 1 Apr, 2015 at 9:58 pm
Subject:replace_address vs add+removenode

Hi.

The documentation suggests to use the replace_address startup
parameter for replacing a dead node. However, it doesn't motivate why
this is superior over adding a new node and retiring the dead one
using nodetool removenode.
I assume it can be more efficient since the new node can take over the
exact tokens of the dead node. Are there any other differences?
Can it be reasonable to not use replace_address in the interest of
more uniform operations?

br, Ulrich