Author: brandonwilliams Date: Thu Dec 9 16:57:42 2010 New Revision: 1044034
URL: http://svn.apache.org/viewvc?rev=1044034&view=rev Log: Restore finishBootstrapping behavior to fix nodetool move. Patch by Nick Bailey, reviewed by brandonwilliams for CASSANDRA-1829 Modified: cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/service/StorageService.java cassandra/trunk/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=1044034&r1=1044033&r2=1044034&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 Thu Dec 9 16:57:42 2010 @@ -246,6 +246,7 @@ public class StorageService implements I public void finishBootstrapping() { isBootstrapMode = false; + setToken(getLocalToken()); logger_.info("Bootstrap/move completed! Now serving reads."); } @@ -256,6 +257,8 @@ public class StorageService implements I logger_.debug("Setting token to {}", token); SystemTable.updateToken(token); tokenMetadata_.updateNormalToken(token, FBUtilities.getLocalAddress()); + Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, valueFactory.normal(getLocalToken())); + setMode("Normal", false); } public StorageService() @@ -395,6 +398,7 @@ public class StorageService implements I logger_.info("This node will not auto bootstrap because it is configured to be a seed node."); Token token; + boolean bootstrapped = false; if (DatabaseDescriptor.isAutoBootstrap() && !(DatabaseDescriptor.getSeeds().contains(FBUtilities.getLocalAddress()) || SystemTable.isBootstrapped())) { @@ -414,6 +418,8 @@ public class StorageService implements I { bootstrap(token); assert !isBootstrapMode; // bootstrap will block until finished + bootstrapped = true; + SystemTable.setBootstrapped(true); // first startup is only chance to bootstrap } // else nothing to do, go directly to participating in ring } @@ -440,10 +446,8 @@ public class StorageService implements I } } - SystemTable.setBootstrapped(true); // first startup is only chance to bootstrap - setToken(token); - Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, valueFactory.normal(getLocalToken())); - setMode("Normal", false); + if(!bootstrapped) + setToken(token); assert tokenMetadata_.sortedTokens().size() > 0; } Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=1044034&r1=1044033&r2=1044034&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Thu Dec 9 16:57:42 2010 @@ -246,6 +246,7 @@ public class StorageService implements I public void finishBootstrapping() { isBootstrapMode = false; + setToken(getLocalToken()); logger_.info("Bootstrap/move completed! Now serving reads."); } @@ -256,6 +257,8 @@ public class StorageService implements I logger_.debug("Setting token to {}", token); SystemTable.updateToken(token); tokenMetadata_.updateNormalToken(token, FBUtilities.getLocalAddress()); + Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, valueFactory.normal(getLocalToken())); + setMode("Normal", false); } public StorageService() @@ -395,6 +398,7 @@ public class StorageService implements I logger_.info("This node will not auto bootstrap because it is configured to be a seed node."); Token token; + boolean bootstrapped = false; if (DatabaseDescriptor.isAutoBootstrap() && !(DatabaseDescriptor.getSeeds().contains(FBUtilities.getLocalAddress()) || SystemTable.isBootstrapped())) { @@ -414,6 +418,8 @@ public class StorageService implements I { bootstrap(token); assert !isBootstrapMode; // bootstrap will block until finished + bootstrapped = true; + SystemTable.setBootstrapped(true); // first startup is only chance to bootstrap } // else nothing to do, go directly to participating in ring } @@ -440,10 +446,8 @@ public class StorageService implements I } } - SystemTable.setBootstrapped(true); // first startup is only chance to bootstrap - setToken(token); - Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS, valueFactory.normal(getLocalToken())); - setMode("Normal", false); + if(!bootstrapped) + setToken(token); assert tokenMetadata_.sortedTokens().size() > 0; }
