You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Chris Goffinet (JIRA)" <ji...@apache.org> on 2009/08/30 22:01:32 UTC

[jira] Assigned: (CASSANDRA-12) Gossiper should set the Node is dead when notifies the subscriber

     [ https://issues.apache.org/jira/browse/CASSANDRA-12?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Chris Goffinet reassigned CASSANDRA-12:
---------------------------------------

    Assignee: Chris Goffinet  (was: Avinash Lakshman)

> Gossiper should set the Node is dead when notifies the subscriber
> -----------------------------------------------------------------
>
>                 Key: CASSANDRA-12
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-12
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: zhu han
>            Assignee: Chris Goffinet
>   Original Estimate: 0.02h
>  Remaining Estimate: 0.02h
>
> When the gossiper is notified by Failure Detector that one node is dead, it would tell the storage service by the onChange() cacallback. However, the gossiper doesn't set the EndPointState to be dead. Please check following code snippet from Gossiper.java
>     public void suspect(EndPoint endpoint)
>     {
>         EndPointState epState = endPointStateMap_.get(endpoint);
>         if ( epState.isAlive() )
>         {
>             logger_.info("EndPoint " + endpoint + " is now dead.");
>             isAlive(endpoint, epState, false);
>             /* Notify an endpoint is dead to interested parties. */
>             EndPointState deltaState = new EndPointState(epState.getHeartBeatState());
>            /* add deltaState.isAlive(false); here */
>             doNotifications(endpoint, deltaState);
>         }
> And the storage service would detect it as the node comes back after network partition and start a hinted transmit. Please see the code snippet in StorageService.java
>         else --> if( nodeIdState == null)
>         {
>             /*
>              * If we are here and if this node is UP and already has an entry
>              * in the token map. It means that the node was behind a network partition.
>             */
>             if ( epState.isAlive() && tokenMetadata_.isKnownEndPoint(endpoint) )
>             {
>                 logger_.debug("EndPoint " + ep + " just recovered from a partition. Sending hinted data.");
>                 doBootstrap(ep, BootstrapMode.HINT);
>             }
>         }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.