Merge branch 'cassandra-1.2' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/78b0dbeb Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/78b0dbeb Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/78b0dbeb Branch: refs/heads/trunk Commit: 78b0dbeb25f2327fc2c417bb07bebac15f99e785 Parents: 86081fa fc5044f Author: Jason Brown <[email protected]> Authored: Wed Jun 19 12:21:52 2013 -0700 Committer: Jason Brown <[email protected]> Committed: Wed Jun 19 12:21:52 2013 -0700 ---------------------------------------------------------------------- src/java/org/apache/cassandra/gms/Gossiper.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/78b0dbeb/src/java/org/apache/cassandra/gms/Gossiper.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/gms/Gossiper.java index c32cc41,efa9865..d8918f3 --- a/src/java/org/apache/cassandra/gms/Gossiper.java +++ b/src/java/org/apache/cassandra/gms/Gossiper.java @@@ -1077,10 -1074,22 +1077,22 @@@ public class Gossiper implements IFailu logger.debug("Attempt to add self as saved endpoint"); return; } - EndpointState epState = new EndpointState(new HeartBeatState(0)); + + //preserve any previously known, in-memory data about the endpoint (such as DC, RACK, and so on) + EndpointState epState = endpointStateMap.get(ep); + if (epState != null) + { + logger.debug("not replacing a previous epState for {}, but reusing it: {}", ep, epState); + epState.setHeartBeatState(new HeartBeatState(0)); + } + else + { + epState = new EndpointState(new HeartBeatState(0)); + } + epState.markDead(); endpointStateMap.put(ep, epState); - unreachableEndpoints.put(ep, System.currentTimeMillis()); + unreachableEndpoints.put(ep, System.nanoTime()); if (logger.isTraceEnabled()) logger.trace("Adding saved endpoint " + ep + " " + epState.getHeartBeatState().getGeneration()); }
