Wrong assumption of me. I found the answer in
GossipDigestSynVerbHandler. I forgot to change the cluster name of the
new cluster.
/Fredrik
2012/9/11 Fredrik fredrik.l.stigb...@sitevision.se:
I've tested a scenario where I wanted to reuse a removed node in a new
cluster with same IP, maybe not very common but anyway, found some strange
behaviour in Gossiper.
Here is what I think/see happening:
- Cassandra 1.1. Three node cluster A, B and C.
- Shutdown node C and remove token for node C.
- Everything looks ok in logs, reporting that node C is removed etc..
- Node A and B still sends Gossip digest about the removed node, but I guess
that's ok since they know about it (Gossiper.endpointStateMap).
- Node C has status removed when checking in JMX console.
- Checked in LocationInfo that Ring only contains token/IP for node A and B.
- Removed system/data tables for C.
- Changed seed on C to point to itself.
- Startup node C, node C only gossips itself and node A and B doesn't
recognize that node C is running, which is correct.
- Restart e.g. node A. Now node A will loose all gossip information
(Gossiper.endpointStateMap) about node C. Node A will request information
from LocationInfo and ask node B
about endpoint states. Node A will receive information from node B about
node C, this will trigger Gossiper.handleMajorStateChange and node C will be
first marked as unreachable
because it's in dead state (removed), node A will try to Gossip
(unreachable endpoints) to node C, which will reply that it's up and node C
becomes incorporated into the old cluster again.
Is this a a bug or is it a requirement that if you take a node out of the
cluster you must change IP on the removed node if you want to use it in
another cluster?
Please enlight me.
Regards
/Fredrik
--
Fredrik Larsson Stigbäck
SiteVision AB Vasagatan 10, 107 10 Örebro
019-17 30 30