On Thu, Apr 15, 2010 at 6:10 PM, Anthony Molinaro <antho...@alumni.caltech.edu> wrote: > 1) shutdown cassandra on instance I want to replace > 2) create a new instance, start cassandra with AutoBootstrap = true > 3) run nodeprobe removetoken against the token of the instance I am > replacing > > Then according to the 'Handling failure' the new instance will "find the > appropriate position automatically". However, it's not clear to me > if this means it will take the same range as the shutdown node or not, > because normally AutoBootstrap == true means it will take "half the keys > from the node with the most disk space used." (from the 'Bootstrap' section). > > So will the process I describe above result in what I want, a new node > replacing an old one?
As you noted, it does not exactly replace the old one. If you require the token to be the same as the dead one, then you should manually move the new node, after removing the dead one. > how > does removetoken know which instance to remove, does it remove the Down > instance? Tokens are unique per node. (Those are the values you see in nodetool ring.) > Another hopefully minor question, if I bring up a new node with > AutoBootstrap = false, what happens? > Does it join the ring but without data Yes. > and without token range? No. (This is why you should not do that.) > Can I then 'nodeprobe move <token for range I want to take over>', and > achieve the same as step 2 above? You can't have two nodes with the same token in the ring at once. So, you can removetoken the old node first, then bootstrap the new one (just specify InitialToken in the config to avoid having it guess one), or you can make it a 3 step process (bootstrap, remove, move) to avoid transferring so much data around. -Jonathan