Author: gdusbabek
Date: Wed May 11 19:23:22 2011
New Revision: 1102038

URL: http://svn.apache.org/viewvc?rev=1102038&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.7/CHANGES.txt
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/gms/Gossiper.java
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java

Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1102038&r1=1102037&r2=1102038&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Wed May 11 19:23:22 2011
@@ -21,7 +21,8 @@
  * 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.7.5
  * improvements/fixes to PIG driver (CASSANDRA-1618, CASSANDRA-2387,

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/gms/Gossiper.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/gms/Gossiper.java?rev=1102038&r1=1102037&r2=1102038&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/gms/Gossiper.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/gms/Gossiper.java
 Wed May 11 19:23:22 2011
@@ -898,15 +898,8 @@ public class Gossiper implements IFailur
         }
 
         /* initialize the heartbeat state for this localEndpoint */
+        maybeInitializeLocalState(generationNbr);
         EndpointState localState = endpointStateMap_.get(localEndpoint_);
-        if ( localState == null )
-        {
-            HeartBeatState hbState = new HeartBeatState(generationNbr);
-            localState = new EndpointState(hbState);
-            localState.isAlive(true);
-            localState.isAGossiper(true);
-            endpointStateMap_.put(localEndpoint_, localState);
-        }
 
         //notify snitches that Gossiper is about to start
         DatabaseDescriptor.getEndpointSnitch().gossiperStarting();
@@ -916,6 +909,21 @@ 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.isAlive(true);
+            localState.isAGossiper(true);
+            endpointStateMap_.put(localEndpoint_, localState);
+        }
+    }
+    
 
     /**
      * Add an endpoint we knew about previously, but whose state is unknown

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java?rev=1102038&r1=1102037&r2=1102038&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/AbstractCassandraDaemon.java
 Wed May 11 19:23:22 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;
@@ -181,6 +182,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