Ec2Snitch changing tokens
-------------------------

                 Key: CASSANDRA-2415
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2415
             Project: Cassandra
          Issue Type: Bug
    Affects Versions: 0.7.4
         Environment: Amazon EC2 -- 4 nodes
            Reporter: Sasha Dolgy


A new 4 node 0.7.4 cluster on Amazon EC2

1.  Brought up the first node without issue with Ec2Snitch configured in the 
cassandra.yaml.
2.  Brought up a second node, with the first node defined as the seed.  No 
visible issues.  
3.  Brought up node 3 in the same manner.  Receiving errors as shown in the 
output below.  

Initially, I -did not- define tokens for the nodes. 

When node 3 was brought online, I had this problem and manually moved the 
tokens and did a nodetool move/repair/clean before getting on to node 4.

The tokens for the 4 nodes:

0
19095547144942516281182777765338228798
56713727820156410577229101238628035242
170141183460469231731687303715884105726

When the 4th node comes online, with it's token set in the cassandra.yaml 
(first one i did it for because of the errors I saw with node 3) ... everything 
goes well at first in joining the ring, etc.....then I see the following error 
in the system.log:

:~$  INFO [HintedHandoff:1] 2011-03-23 00:37:24,298 HintedHandOffManager.java 
(line 304) Started hinted handoff for
endpoint /10.0.0.2
 INFO [HintedHandoff:1] 2011-03-23 00:37:24,298 HintedHandOffManager.java (line 
360) Finished hinted handoff of 0 rows
to endpoint /10.0.0.2
 INFO [GossipStage:2] 2011-03-23 00:37:55,381 StorageService.java (line 702) 
Node /10.0.0.2 state jump to bootstrap
ERROR [GossipStage:2] 2011-03-23 00:37:55,381 DebuggableThreadPoolExecutor.java 
(line 103) Error in
ThreadPoolExecutor java.lang.RuntimeException: Bootstrap Token collision 
between /10.0.0.3 and /10.0.0.2 (token 19095547144942516281182777765338228798 
        at 
org.apache.cassandra.locator.TokenMetadata.addBootstrapToken(TokenMetadata.java:143)
        at 
org.apache.cassandra.service.StorageService.handleStateBootstrap(StorageService.java:706)
        at 
org.apache.cassandra.service.StorageService.onChange(StorageService.java:648)
        at org.apache.cassandra.gms.Gossiper.doNotifications(Gossiper.java:772)
        at 
org.apache.cassandra.gms.Gossiper.applyApplicationStateLocally(Gossiper.java:737)
        at 
org.apache.cassandra.gms.Gossiper.applyStateLocally(Gossiper.java:679)
        at 
org.apache.cassandra.gms.GossipDigestAck2VerbHandler.doVerb(GossipDigestAck2VerbHandler.java:60)
        at 
org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:72)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
ERROR [GossipStage:2] 2011-03-23 00:37:55,382
AbstractCassandraDaemon.java (line 112) Fatal exception in thread
Thread[GossipStage:2,5,main]
java.lang.RuntimeException: Bootstrap Token collision between
/10.0.0.3 and /10.0.0.2 (token 19095547144942516281182777765338228798
        at 
org.apache.cassandra.locator.TokenMetadata.addBootstrapToken(TokenMetadata.java:143)
        at 
org.apache.cassandra.service.StorageService.handleStateBootstrap(StorageService.java:706)
        at 
org.apache.cassandra.service.StorageService.onChange(StorageService.java:648)
        at org.apache.cassandra.gms.Gossiper.doNotifications(Gossiper.java:772)
        at 
org.apache.cassandra.gms.Gossiper.applyApplicationStateLocally(Gossiper.java:737)
        at 
org.apache.cassandra.gms.Gossiper.applyStateLocally(Gossiper.java:679)
        at 
org.apache.cassandra.gms.GossipDigestAck2VerbHandler.doVerb(GossipDigestAck2VerbHandler.java:60)
        at 
org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:72)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

:~$  INFO [GossipStage:3] 2011-03-23 00:38:24,859 StorageService.java
(line 745) Nodes /10.0.0.2 and /10.0.0.3 have the same token 
19095547144942516281182777765338228798.  /10.0.0.2 is the new owner
 WARN [GossipStage:3] 2011-03-23 00:38:24,859 TokenMetadata.java (line
115) Token 19095547144942516281182777765338228798 changing ownership
from /10.0.0.3 to /10.0.0.2

:~$ nodetool -h 10.0.0.1 -p 9090 ring
Address         Status State   Load            Owns    Token

170141183460469231731687303715884105726
10.0.0.1    Up     Normal  99.31 KB        0.00%   0
10.0.0.2   Up     Normal  122.67 KB       11.22% 
19095547144942516281182777765338228798
10.0.0.4   Up     Normal  103.75 KB       88.78% 
170141183460469231731687303715884105726
:~$

The EC2 nodes are all part of the same region (Singapore).

I have removed the Ec2Snitch configuration from all nodes and set it back to 
the default, restarted all nodes, and moved tokens back to the original values. 
 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to