Le 13 juin 2012 à 20:52, aaron morton a écrit :

>> You meant -Dcassandra.load_ring_state=false right ?
> yes, sorry. 
> 
>> Maybe I could open a jira about my issue ? Maybe there was a config mess on 
>> my part at some point, ie the unsynchronized date on my machines, but I 
>> think it would be nice if cassandra could resolve itself of that 
>> inconsistent state.
> The old nodes are not listed in the ring are they ?
> 
> You can try calling unsafeAssassinateEndpoint() on the Gossip MBean. 

unsafe, assassinate, hum :)
I had read the source code of that function to reassure myself, but I did 
called it.
And it worked, I don't see any packet from new nodes to the old nodes anymore.
The gossip info changed. I have now some 'LEFT' statuses instead of 'removed' 
ones:
/10.10.0.24
  REMOVAL_COORDINATOR:REMOVER,0
  STATUS:LEFT,141713094015402114482637574571109123934,1339920978684
/10.10.0.22
  REMOVAL_COORDINATOR:REMOVER,113427455640312814857969558651062452224
  STATUS:LEFT,141713094015402114482637574571109123934,1339920834956

Thanks you very much Aaron.

Nicolas


> 
> Cheers
> 
> -----------------
> Aaron Morton
> Freelance Developer
> @aaronmorton
> http://www.thelastpickle.com
> 
> On 14/06/2012, at 12:06 AM, Nicolas Lalevée wrote:
> 
>> 
>> Le 13 juin 2012 à 10:30, aaron morton a écrit :
>> 
>>> Here is what I *think* is going on, if Brandon is around he may be able to 
>>> help out. 
>>> 
>>> 
>>> The old nodes are being included in the Gossip rounds, because 
>>> Gossiper.doGossipToUnreachableMember() just looks at the nodes that are 
>>> unreachable. It does not check if they have been removed from the cluster. 
>>> 
>>> Information about the removed nodes is kept by gossip so that if a node is 
>>> removed while it is down it will shut down when restarted. This information 
>>> *should* stay in gossip for 3 days. 
>>> 
>>> In your gossip info, the last long on the STATUS lines is the expiry time 
>>> for this info…
>>> 
>>> /10.10.0.24
>>> STATUS:removed,127605887595351923798765477786913079296,1336530323263
>>> REMOVAL_COORDINATOR:REMOVER,0
>>> /10.10.0.22
>>> STATUS:removed,42535295865117307932921825928971026432,1336529659203
>>> REMOVAL_COORDINATOR:REMOVER,113427455640312814857969558651062452224
>>> 
>>> For the first line it's 
>>> In [48]: datetime.datetime.fromtimestamp(1336530323263/1000)
>>> Out[48]: datetime.datetime(2012, 5, 9, 14, 25, 23)
>>> 
>>> So that's good. 
>>> 
>>> The Gossip round will remove the 0.24 and 0.22 nodes from the local state 
>>> if the expiry time has passed, and the node is marked as dead and it's not 
>>> in the token ring. 
>>> 
>>> You can see if the node thinks 0.24 and 0.22 are up by looking 
>>> getSimpleStates() on the FailureDetectorMBean. (I use jmxterm to do this 
>>> sort of thing)
>> 
>> The two old nodes are still seen as down:
>> SimpleStates:[/10.10.0.22:DOWN, /10.10.0.24:DOWN, /10.10.0.26:UP, 
>> /10.10.0.25:UP, /10.10.0.27:UP]
>> 
>>> 
>>> The other thing that can confuse things is the gossip generation. If your 
>>> old nodes were started with a datetime in the future that can muck things 
>>> up. 
>> 
>> I have just checked, my old nodes machines are nicely synchronized. My new 
>> nodes have some lag of few seconds, some in the future, some in the past. I 
>> definitively need to fix that.
>> 
>>> The simple to try is starting the server with the 
>>> -Dcassandra.join_ring=false JVM option. This will force the node to get the 
>>> ring info from othernodes. Check things with nodetool gossip info to see if 
>>> the other nodes tell it about the old ones again.
>> 
>> You meant -Dcassandra.load_ring_state=false right ?
>> 
>> Then nothing changed.
>> 
>>> Sorry, gossip can be tricky to diagnose over email. 
>> 
>> No worry, I really appreciate that you take time looking into my issues.
>> 
>> Maybe I could open a jira about my issue ? Maybe there was a config mess on 
>> my part at some point, ie the unsynchronized date on my machines, but I 
>> think it would be nice if cassandra could resolve itself of that 
>> inconsistent state.
>> 
>> Nicolas
>> 
>>> 
>>> 
>>> 
>>> 
>>> -----------------
>>> Aaron Morton
>>> Freelance Developer
>>> @aaronmorton
>>> http://www.thelastpickle.com
>>> 
>>> On 12/06/2012, at 10:33 PM, Nicolas Lalevée wrote:
>>> 
>>>> I have one dirty solution to try: bring data-2 and data-4 back up and down 
>>>> again. Is there any way I can tell cassandra to not get any data, so when 
>>>> I would get my old node up, no streaming would start ?
>>>> 
>>>> cheers,
>>>> Nicolas
>>>> 
>>>> Le 12 juin 2012 à 12:25, Nicolas Lalevée a écrit :
>>>> 
>>>>> Le 12 juin 2012 à 11:03, aaron morton a écrit :
>>>>> 
>>>>>> Try purging the hints for 10.10.0.24 using the HintedHandOffManager 
>>>>>> MBean.
>>>>> 
>>>>> As far as I could tell, there were no hinted hand off to be delivered. 
>>>>> Nevertheless I have called "deleteHintsForEndpoint" on every node for the 
>>>>> two expected to be out nodes.
>>>>> Nothing changed, I still see packet being send to these old nodes.
>>>>> 
>>>>> I looked closer to ResponsePendingTasks of MessagingService. Actually the 
>>>>> numbers change, between 0 and about 4. So tasks are ending but new ones 
>>>>> come just after.
>>>>> 
>>>>> Nicolas
>>>>> 
>>>>>> 
>>>>>> Cheers
>>>>>> 
>>>>>> -----------------
>>>>>> Aaron Morton
>>>>>> Freelance Developer
>>>>>> @aaronmorton
>>>>>> http://www.thelastpickle.com
>>>>>> 
>>>>>> On 12/06/2012, at 3:33 AM, Nicolas Lalevée wrote:
>>>>>> 
>>>>>>> finally, thanks to the groovy jmx builder, it was not that hard.
>>>>>>> 
>>>>>>> 
>>>>>>> Le 11 juin 2012 à 12:12, Samuel CARRIERE a écrit :
>>>>>>> 
>>>>>>>> If I were you, I would connect (through JMX, with jconsole) to one of 
>>>>>>>> the nodes that is sending messages to an old node, and would have a 
>>>>>>>> look at these MBean : 
>>>>>>>> - org.apache.net.FailureDetector : does SimpleStates looks good ? (or 
>>>>>>>> do you see an IP of an old node)
>>>>>>> 
>>>>>>> SimpleStates:[/10.10.0.22:DOWN, /10.10.0.24:DOWN, /10.10.0.26:UP, 
>>>>>>> /10.10.0.25:UP, /10.10.0.27:UP]
>>>>>>> 
>>>>>>>> - org.apache.net.MessagingService : do you see one of the old IP in 
>>>>>>>> one of the attributes ?
>>>>>>> 
>>>>>>> data-5:
>>>>>>> CommandCompletedTasks:
>>>>>>> [10.10.0.22:2, 10.10.0.26:6147307, 10.10.0.27:6084684, 10.10.0.24:2]
>>>>>>> CommandPendingTasks:
>>>>>>> [10.10.0.22:0, 10.10.0.26:0, 10.10.0.27:0, 10.10.0.24:0]
>>>>>>> ResponseCompletedTasks:
>>>>>>> [10.10.0.22:1487, 10.10.0.26:6187204, 10.10.0.27:6062890, 
>>>>>>> 10.10.0.24:1495]
>>>>>>> ResponsePendingTasks:
>>>>>>> [10.10.0.22:0, 10.10.0.26:0, 10.10.0.27:0, 10.10.0.24:0]
>>>>>>> 
>>>>>>> data-6:
>>>>>>> CommandCompletedTasks:
>>>>>>> [10.10.0.22:2, 10.10.0.27:6064992, 10.10.0.24:2, 10.10.0.25:6308102]
>>>>>>> CommandPendingTasks:
>>>>>>> [10.10.0.22:0, 10.10.0.27:0, 10.10.0.24:0, 10.10.0.25:0]
>>>>>>> ResponseCompletedTasks:
>>>>>>> [10.10.0.22:1463, 10.10.0.27:6067943, 10.10.0.24:1474, 
>>>>>>> 10.10.0.25:6367692]
>>>>>>> ResponsePendingTasks:
>>>>>>> [10.10.0.22:0, 10.10.0.27:0, 10.10.0.24:2, 10.10.0.25:0]
>>>>>>> 
>>>>>>> data-7:
>>>>>>> CommandCompletedTasks:
>>>>>>> [10.10.0.22:2, 10.10.0.26:6043653, 10.10.0.24:2, 10.10.0.25:5964168]
>>>>>>> CommandPendingTasks:
>>>>>>> [10.10.0.22:0, 10.10.0.26:0, 10.10.0.24:0, 10.10.0.25:0]
>>>>>>> ResponseCompletedTasks:
>>>>>>> [10.10.0.22:1424, 10.10.0.26:6090251, 10.10.0.24:1431, 
>>>>>>> 10.10.0.25:6094954]
>>>>>>> ResponsePendingTasks:
>>>>>>> [10.10.0.22:4, 10.10.0.26:0, 10.10.0.24:1, 10.10.0.25:0]
>>>>>>> 
>>>>>>>> - org.apache.net.StreamingService : do you see an old IP in 
>>>>>>>> StreamSources or StreamDestinations ?
>>>>>>> 
>>>>>>> nothing streaming on the 3 nodes.
>>>>>>> nodetool netstats confirmed that.
>>>>>>> 
>>>>>>>> - org.apache.internal.HintedHandoff : are there non-zero ActiveCount, 
>>>>>>>> CurrentlyBlockedTasks, PendingTasks, TotalBlockedTask ?
>>>>>>> 
>>>>>>> On the 3 nodes, all at 0.
>>>>>>> 
>>>>>>> I don't know much what I'm looking at, but it seems that some 
>>>>>>> ResponsePendingTasks needs to end.
>>>>>>> 
>>>>>>> Nicolas
>>>>>>> 
>>>>>>>> 
>>>>>>>> Samuel 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Nicolas Lalevée <nicolas.lale...@hibnet.org>
>>>>>>>> 08/06/2012 21:03
>>>>>>>> Veuillez répondre à
>>>>>>>> user@cassandra.apache.org
>>>>>>>> 
>>>>>>>> A
>>>>>>>> user@cassandra.apache.org
>>>>>>>> cc
>>>>>>>> Objet
>>>>>>>> Re: Dead node still being pinged
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Le 8 juin 2012 à 20:02, Samuel CARRIERE a écrit :
>>>>>>>> 
>>>>>>>>> I'm in the train but just a guess : maybe it's hinted handoff. A look 
>>>>>>>>> in the logs of the new nodes could confirm that : look for the IP of 
>>>>>>>>> an old node and maybe you'll find hinted handoff related messages.
>>>>>>>> 
>>>>>>>> I grepped on every node about every old node, I got nothing since the 
>>>>>>>> "crash".
>>>>>>>> 
>>>>>>>> If it can be of some help, here is some grepped log of the crash:
>>>>>>>> 
>>>>>>>> system.log.1: WARN [RMI TCP Connection(1037)-10.10.0.26] 2012-05-06 
>>>>>>>> 00:39:30,241 StorageService.java (line 2417) Endpoint /10.10.0.24 is 
>>>>>>>> down and will not receive data for re-replication of /10.10.0.22
>>>>>>>> system.log.1: WARN [RMI TCP Connection(1037)-10.10.0.26] 2012-05-06 
>>>>>>>> 00:39:30,242 StorageService.java (line 2417) Endpoint /10.10.0.24 is 
>>>>>>>> down and will not receive data for re-replication of /10.10.0.22
>>>>>>>> system.log.1: WARN [RMI TCP Connection(1037)-10.10.0.26] 2012-05-06 
>>>>>>>> 00:39:30,242 StorageService.java (line 2417) Endpoint /10.10.0.24 is 
>>>>>>>> down and will not receive data for re-replication of /10.10.0.22
>>>>>>>> system.log.1: WARN [RMI TCP Connection(1037)-10.10.0.26] 2012-05-06 
>>>>>>>> 00:39:30,243 StorageService.java (line 2417) Endpoint /10.10.0.24 is 
>>>>>>>> down and will not receive data for re-replication of /10.10.0.22
>>>>>>>> system.log.1: WARN [RMI TCP Connection(1037)-10.10.0.26] 2012-05-06 
>>>>>>>> 00:39:30,243 StorageService.java (line 2417) Endpoint /10.10.0.24 is 
>>>>>>>> down and will not receive data for re-replication of /10.10.0.22
>>>>>>>> system.log.1: INFO [GossipStage:1] 2012-05-06 00:44:33,822 
>>>>>>>> Gossiper.java (line 818) InetAddress /10.10.0.24 is now dead.
>>>>>>>> system.log.1: INFO [GossipStage:1] 2012-05-06 04:25:23,894 
>>>>>>>> Gossiper.java (line 818) InetAddress /10.10.0.24 is now dead.
>>>>>>>> system.log.1: INFO [OptionalTasks:1] 2012-05-06 04:25:23,895 
>>>>>>>> HintedHandOffManager.java (line 179) Deleting any stored hints for 
>>>>>>>> /10.10.0.24
>>>>>>>> system.log.1: INFO [GossipStage:1] 2012-05-06 04:25:23,895 
>>>>>>>> StorageService.java (line 1157) Removing token 
>>>>>>>> 127605887595351923798765477786913079296 for /10.10.0.24
>>>>>>>> system.log.1: INFO [GossipStage:1] 2012-05-09 04:26:25,015 
>>>>>>>> Gossiper.java (line 818) InetAddress /10.10.0.24 is now dead.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Maybe its the way I have removed nodes ? AFAIR I didn't used the 
>>>>>>>> decommission command. For each node I got the node down and then issue 
>>>>>>>> a remove token command.
>>>>>>>> Here is what I can find in the log about when I removed one of them:
>>>>>>>> 
>>>>>>>> system.log.1: INFO [GossipTasks:1] 2012-05-02 17:21:10,281 
>>>>>>>> Gossiper.java (line 818) InetAddress /10.10.0.24 is now dead.
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 17:21:21,496 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [GossipStage:1] 2012-05-02 17:21:59,307 
>>>>>>>> Gossiper.java (line 818) InetAddress /10.10.0.24 is now dead.
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 17:31:20,336 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 17:41:06,177 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 17:51:18,148 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 18:00:31,709 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 18:11:02,521 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 18:20:38,282 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 18:31:09,513 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 18:40:31,565 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 18:51:10,566 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 19:00:32,197 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 19:11:17,018 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [HintedHandoff:1] 2012-05-02 19:21:21,759 
>>>>>>>> HintedHandOffManager.java (line 292) Endpoint /10.10.0.24 died before 
>>>>>>>> hint delivery, aborting
>>>>>>>> system.log.1: INFO [GossipStage:1] 2012-05-02 20:05:57,281 
>>>>>>>> Gossiper.java (line 818) InetAddress /10.10.0.24 is now dead.
>>>>>>>> system.log.1: INFO [OptionalTasks:1] 2012-05-02 20:05:57,281 
>>>>>>>> HintedHandOffManager.java (line 179) Deleting any stored hints for 
>>>>>>>> /10.10.0.24
>>>>>>>> system.log.1: INFO [GossipStage:1] 2012-05-02 20:05:57,281 
>>>>>>>> StorageService.java (line 1157) Removing token 
>>>>>>>> 145835300108973619103103718265651724288 for /10.10.0.24
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Nicolas
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> ----- Message d'origine -----
>>>>>>>>> De : Nicolas Lalevée [nicolas.lale...@hibnet.org]
>>>>>>>>> Envoyé : 08/06/2012 19:26 ZE2
>>>>>>>>> À : user@cassandra.apache.org
>>>>>>>>> Objet : Re: Dead node still being pinged
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Le 8 juin 2012 à 15:17, Samuel CARRIERE a écrit :
>>>>>>>>> 
>>>>>>>>>> What does nodetool ring says ? (Ask every node)
>>>>>>>>> 
>>>>>>>>> currently, each of new node see only the tokens of the new nodes.
>>>>>>>>> 
>>>>>>>>>> Have you checked that the list of seeds in every yaml is correct ?
>>>>>>>>> 
>>>>>>>>> yes, it is correct, every of my new node point to the first of my new 
>>>>>>>>> node
>>>>>>>>> 
>>>>>>>>>> What version of cassandra are you using ?
>>>>>>>>> 
>>>>>>>>> Sorry I should have wrote this in my first mail.
>>>>>>>>> I use the 1.0.9
>>>>>>>>> 
>>>>>>>>> Nicolas
>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Samuel
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> Nicolas Lalevée <nicolas.lale...@hibnet.org>
>>>>>>>>>> 08/06/2012 14:10
>>>>>>>>>> Veuillez répondre à
>>>>>>>>>> user@cassandra.apache.org
>>>>>>>>>> 
>>>>>>>>>> A
>>>>>>>>>> user@cassandra.apache.org
>>>>>>>>>> cc
>>>>>>>>>> Objet
>>>>>>>>>> Dead node still being pinged
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> I had a configuration where I had 4 nodes, data-1,4. We then bought 
>>>>>>>>>> 3 bigger machines, data-5,7. And we moved all data from data-1,4 to 
>>>>>>>>>> data-5,7.
>>>>>>>>>> To move all the data without interruption of service, I added one 
>>>>>>>>>> new node at a time. And then I removed one by one the old machines 
>>>>>>>>>> via a "remove token".
>>>>>>>>>> 
>>>>>>>>>> Everything was working fine. Until there was an expected load on our 
>>>>>>>>>> cluster, the machine started to swap and become unresponsive. We 
>>>>>>>>>> fixed the unexpected load and the three new machines were restarted. 
>>>>>>>>>> After that the new cassandra machines were stating that some old 
>>>>>>>>>> token were not assigned, namely from data-2 and data-4. To fix this 
>>>>>>>>>> I issued again some "remove token" commands.
>>>>>>>>>> 
>>>>>>>>>> Everything seems to be back to normal, but on the network I still 
>>>>>>>>>> see some packet from the new cluster to the old machines. On the 
>>>>>>>>>> port 7000.
>>>>>>>>>> How I can tell cassandra to completely forget about the old machines 
>>>>>>>>>> ?
>>>>>>>>>> 
>>>>>>>>>> Nicolas
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to