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