Author: gdusbabek
Date: Wed May 11 19:56:40 2011
New Revision: 1102055
URL: http://svn.apache.org/viewvc?rev=1102055&view=rev
Log:
initialize local ep state prior to gossip startup if needed. patch by
gdusbabek, reviewed by brandonwilliams. CASSANDRA-2638
Modified:
cassandra/branches/cassandra-0.8/CHANGES.txt
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
Modified: cassandra/branches/cassandra-0.8/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/CHANGES.txt?rev=1102055&r1=1102054&r2=1102055&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.8/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.8/CHANGES.txt Wed May 11 19:56:40 2011
@@ -5,6 +5,7 @@
* avoid attempting to replay mutations from dropped keyspaces (CASSANDRA-2631)
* avoid using cached position of a key when GT is requested (CASSANDRA-2633)
* fix counting bloom filter true positives (CASSANDRA-2637)
+ * initialize local ep state prior to gossip startup if needed (CASSANDRA-2638)
0.8.0-rc1
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java?rev=1102055&r1=1102054&r2=1102055&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/gms/Gossiper.java
Wed May 11 19:56:40 2011
@@ -27,6 +27,7 @@ import java.util.*;
import java.util.Map.Entry;
import java.util.concurrent.*;
+import org.apache.cassandra.db.SystemTable;
import org.apache.cassandra.net.MessageProducer;
import org.apache.cassandra.utils.FBUtilities;
import org.cliffc.high_scale_lib.NonBlockingHashMap;
@@ -838,15 +839,9 @@ public class Gossiper implements IFailur
}
/* initialize the heartbeat state for this localEndpoint */
+ maybeInitializeLocalState(generationNbr);
EndpointState localState =
endpointStateMap.get(FBUtilities.getLocalAddress());
- if ( localState == null )
- {
- HeartBeatState hbState = new HeartBeatState(generationNbr);
- localState = new EndpointState(hbState);
- localState.markAlive();
- endpointStateMap.put(FBUtilities.getLocalAddress(), localState);
- }
-
+
//notify snitches that Gossiper is about to start
DatabaseDescriptor.getEndpointSnitch().gossiperStarting();
if (logger.isTraceEnabled())
@@ -857,6 +852,19 @@ public class Gossiper implements IFailur
Gossiper.intervalInMillis,
TimeUnit.MILLISECONDS);
}
+
+ // initialize local HB state if needed.
+ public void maybeInitializeLocalState(int generationNbr)
+ {
+ EndpointState localState =
endpointStateMap.get(FBUtilities.getLocalAddress());
+ if ( localState == null )
+ {
+ HeartBeatState hbState = new HeartBeatState(generationNbr);
+ localState = new EndpointState(hbState);
+ localState.markAlive();
+ endpointStateMap.put(FBUtilities.getLocalAddress(), localState);
+ }
+ }
/**
* Add an endpoint we knew about previously, but whose state is unknown
Modified:
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java?rev=1102055&r1=1102054&r2=1102055&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
(original)
+++
cassandra/branches/cassandra-0.8/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
Wed May 11 19:56:40 2011
@@ -29,6 +29,7 @@ import java.util.concurrent.SynchronousQ
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import org.apache.cassandra.gms.Gossiper;
import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -179,6 +180,7 @@ public abstract class AbstractCassandraD
UUID lastMigration = Migration.getLastMigrationId();
if ((lastMigration != null) && (lastMigration.timestamp() >
currentMigration.timestamp()))
{
+
Gossiper.instance.maybeInitializeLocalState(SystemTable.incrementAndGetGeneration());
MigrationManager.applyMigrations(currentMigration, lastMigration);
}