You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/11/23 17:46:29 UTC

svn commit: r883405 - /incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java

Author: jbellis
Date: Mon Nov 23 16:46:29 2009
New Revision: 883405

URL: http://svn.apache.org/viewvc?rev=883405&view=rev
Log:
Modify move function to get balanced token at bootstrap time if token given as a parameter was null.  patch by Jaakko Laine; reviewed by jbellis for CASSANDRA-574

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=883405&r1=883404&r2=883405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Mon Nov 23 16:46:29 2009
@@ -1014,16 +1014,20 @@
 
     public void loadBalance() throws IOException, InterruptedException
     {
-        Token token = BootStrapper.getBalancedToken(tokenMetadata_, StorageLoadBalancer.instance().getLoadInfo());
-        move(token);
+        move((Token)null);
     }
 
+    /**
+     * move the node to new token or find a new token to boot to according to load
+     *
+     * @param token new token to boot to, or if null, find balanced token to boot to
+     */
     private void move(final Token token) throws InterruptedException
     {
         if (tokenMetadata_.getPendingRanges(FBUtilities.getLocalAddress()).size() > 0)
             throw new UnsupportedOperationException("data is currently moving to this node; unable to leave the ring");
 
-        logger_.info("moving to " + token);
+        logger_.info("starting move. leaving token " + getLocalToken());
         Gossiper.instance().addApplicationState(STATE_LEAVING, new ApplicationState(getLocalToken().toString()));
         logger_.info("move sleeping " + Streaming.RING_DELAY);
         Thread.sleep(Streaming.RING_DELAY);
@@ -1034,8 +1038,11 @@
             {
                 try
                 {
-                    logger_.info("re-bootstrapping to new token " + token);
-                    startBootstrap(token);
+                    Token bootstrapToken = token;
+                    if (bootstrapToken == null)
+                        bootstrapToken = BootStrapper.getBalancedToken(tokenMetadata_, StorageLoadBalancer.instance().getLoadInfo());
+                    logger_.info("re-bootstrapping to new token " + bootstrapToken);
+                    startBootstrap(bootstrapToken);
                 }
                 catch (IOException e)
                 {