Author: jbellis
Date: Fri Nov 19 15:14:06 2010
New Revision: 1036885

URL: http://svn.apache.org/viewvc?rev=1036885&view=rev
Log:
clean up token/ring code on first startup
patch by jbellis; reviewed by tjake for CASSANDRA-1758

Modified:
    
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java

Modified: 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
URL: 
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java?rev=1036885&r1=1036884&r2=1036885&view=diff
==============================================================================
--- 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
 (original)
+++ 
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java
 Fri Nov 19 15:14:06 2010
@@ -246,11 +246,7 @@ public class StorageService implements I
     public void finishBootstrapping()
     {
         isBootstrapMode = false;
-        SystemTable.setBootstrapped(true);
-        setToken(getLocalToken());
-        Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, 
valueFactory.normal(getLocalToken()));
         logger_.info("Bootstrap/move completed! Now serving reads.");
-        setMode("Normal", false);
     }
 
     /** This method updates the local token on disk  */
@@ -393,6 +389,7 @@ public class StorageService implements I
                 && !SystemTable.isBootstrapped())
             logger_.info("This node will not auto bootstrap because it is 
configured to be a seed node.");
 
+        Token token;
         if (DatabaseDescriptor.isAutoBootstrap()
             && 
!(DatabaseDescriptor.getSeeds().contains(FBUtilities.getLocalAddress()) || 
SystemTable.isBootstrapped()))
         {
@@ -406,25 +403,18 @@ public class StorageService implements I
                 throw new UnsupportedOperationException(s);
             }
             setMode("Joining: getting bootstrap token", true);
-            Token token = BootStrapper.getBootstrapToken(tokenMetadata_, 
StorageLoadBalancer.instance.getLoadInfo());
+            token = BootStrapper.getBootstrapToken(tokenMetadata_, 
StorageLoadBalancer.instance.getLoadInfo());
             // don't bootstrap if there are no tables defined.
             if (DatabaseDescriptor.getNonSystemTables().size() > 0)
             {
                 bootstrap(token);
                 assert !isBootstrapMode; // bootstrap will block until finished
             }
-            else
-            {
-                isBootstrapMode = false;
-                SystemTable.setBootstrapped(true);
-                setToken(token);
-                
Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, 
valueFactory.normal(token));
-                setMode("Normal", false);
-            }
+            // else nothing to do, go directly to participating in ring
         }
         else
         {
-            Token token = SystemTable.getSavedToken();
+            token = SystemTable.getSavedToken();
             if (token == null)
             {
                 String initialToken = DatabaseDescriptor.getInitialToken();
@@ -438,18 +428,18 @@ public class StorageService implements I
                     token = 
partitioner_.getTokenFactory().fromString(initialToken);
                     logger_.info("Saved token not found. Using " + token + " 
from configuration");
                 }
-                SystemTable.updateToken(token);
             }
             else
             {
                 logger_.info("Using saved token " + token);
             }
-            SystemTable.setBootstrapped(true);
-            tokenMetadata_.updateNormalToken(token, 
FBUtilities.getLocalAddress());
-            
Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, 
valueFactory.normal(token));
-            setMode("Normal", false);
         } 
-        
+
+        SystemTable.setBootstrapped(true); // first startup is only chance to 
bootstrap
+        setToken(token);
+        Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, 
valueFactory.normal(getLocalToken()));
+        setMode("Normal", false);
+
         assert tokenMetadata_.sortedTokens().size() > 0;
     }
 


Reply via email to