You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "zhu han (JIRA)" <ji...@apache.org> on 2009/03/26 06:47:51 UTC

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

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
            Reporter: zhu han


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.


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

Posted by "Chris Goffinet (JIRA)" <ji...@apache.org>.
     [ 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.


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

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-12?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis reassigned CASSANDRA-12:
---------------------------------------

    Assignee: 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
>            Reporter: zhu han
>            Assignee: Avinash Lakshman
>   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.


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

Posted by "Jonathan Ellis (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CASSANDRA-12?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jonathan Ellis resolved CASSANDRA-12.
-------------------------------------

    Resolution: Invalid
      Assignee:     (was: Chris Goffinet)

            isAlive(endpoint, epState, false); 

is what sets epState.isAlive to false.

> 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
>   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.