You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2012/01/16 23:39:33 UTC
git commit: Remove EndpointState.hasToken Patch by brandonwilliams,
reviewed by vijay for CASSANDRA-3747
Updated Branches:
refs/heads/trunk 44a7db706 -> db59808bf
Remove EndpointState.hasToken
Patch by brandonwilliams, reviewed by vijay for CASSANDRA-3747
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/db59808b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/db59808b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/db59808b
Branch: refs/heads/trunk
Commit: db59808bf73c7c4709ea5b33b5ba1d59d7582b69
Parents: 44a7db7
Author: Brandon Williams <br...@apache.org>
Authored: Mon Jan 16 16:31:32 2012 -0600
Committer: Brandon Williams <br...@apache.org>
Committed: Mon Jan 16 16:31:32 2012 -0600
----------------------------------------------------------------------
.../org/apache/cassandra/gms/EndpointState.java | 17 --------------
src/java/org/apache/cassandra/gms/Gossiper.java | 18 +++++----------
2 files changed, 6 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/db59808b/src/java/org/apache/cassandra/gms/EndpointState.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/EndpointState.java b/src/java/org/apache/cassandra/gms/EndpointState.java
index c6783a7..0e643cd 100644
--- a/src/java/org/apache/cassandra/gms/EndpointState.java
+++ b/src/java/org/apache/cassandra/gms/EndpointState.java
@@ -46,12 +46,6 @@ public class EndpointState
private volatile long updateTimestamp;
private volatile boolean isAlive;
- // whether this endpoint has token associated with it or not. Initially set false for all
- // endpoints. After certain time of inactivity, gossiper will examine if this node has a
- // token or not and will set this true if token is found. If there is no token, this is a
- // fat client and will be removed automatically from gossip.
- private volatile boolean hasToken;
-
public static IVersionedSerializer<EndpointState> serializer()
{
return serializer;
@@ -62,7 +56,6 @@ public class EndpointState
hbState = initialHbState;
updateTimestamp = System.currentTimeMillis();
isAlive = true;
- hasToken = false;
}
HeartBeatState getHeartBeatState()
@@ -120,16 +113,6 @@ public class EndpointState
{
isAlive = false;
}
-
- void setHasToken(boolean value)
- {
- hasToken = value;
- }
-
- boolean hasToken()
- {
- return hasToken;
- }
}
class EndpointStateSerializer implements IVersionedSerializer<EndpointState>
http://git-wip-us.apache.org/repos/asf/cassandra/blob/db59808b/src/java/org/apache/cassandra/gms/Gossiper.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java b/src/java/org/apache/cassandra/gms/Gossiper.java
index d1a5b8d..27a1ba7 100644
--- a/src/java/org/apache/cassandra/gms/Gossiper.java
+++ b/src/java/org/apache/cassandra/gms/Gossiper.java
@@ -622,19 +622,15 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
long duration = now - epState.getUpdateTimestamp();
// check if this is a fat client. fat clients are removed automatically from
- // gosip after FatClientTimeout
- if (!epState.hasToken() && !epState.isAlive() && !justRemovedEndpoints.containsKey(endpoint) && (duration > FatClientTimeout))
+ // gossip after FatClientTimeout. Do not remove dead states here.
+ if (!isDeadState(epState) && !epState.isAlive() && !StorageService.instance.getTokenMetadata().isMember(endpoint) && !justRemovedEndpoints.containsKey(endpoint) && (duration > FatClientTimeout))
{
- if (StorageService.instance.getTokenMetadata().isMember(endpoint))
- epState.setHasToken(true);
- else
- {
- logger.info("FatClient " + endpoint + " has been silent for " + FatClientTimeout + "ms, removing from gossip");
- removeEndpoint(endpoint); // will put it in justRemovedEndpoints to respect quarantine delay
- evictFromMembership(endpoint); // can get rid of the state immediately
- }
+ logger.info("FatClient " + endpoint + " has been silent for " + FatClientTimeout + "ms, removing from gossip");
+ removeEndpoint(endpoint); // will put it in justRemovedEndpoints to respect quarantine delay
+ evictFromMembership(endpoint); // can get rid of the state immediately
}
+ // check for dead state removal
long expireTime = getExpireTimeForEndpoint(endpoint);
if (!epState.isAlive() && (now > expireTime)
&& (!StorageService.instance.getTokenMetadata().isMember(endpoint)))
@@ -851,7 +847,6 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
{
logger.debug("Not marking " + ep + " alive due to dead state");
markDead(ep, epState);
- epState.setHasToken(true); // fat clients won't have a dead state
}
for (IEndpointStateChangeSubscriber subscriber : subscribers)
subscriber.onJoin(ep, epState);
@@ -1102,7 +1097,6 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
}
EndpointState epState = new EndpointState(new HeartBeatState(0));
epState.markDead();
- epState.setHasToken(true);
endpointStateMap.put(ep, epState);
unreachableEndpoints.put(ep, System.currentTimeMillis());
if (logger.isTraceEnabled())