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);
         }
         


Reply via email to