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.