You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2012/12/08 00:34:04 UTC

[1/11] git commit: Cleanup from 5025, allow recovering nodes to pull immediately

Updated Branches:
  refs/heads/cassandra-1.1 f618369f3 -> 5e4629793
  refs/heads/cassandra-1.2 bdf9c2a91 -> 2828d28eb
  refs/heads/cassandra-1.2.0 d599b3fc8 -> fbf9f5533
  refs/heads/trunk ff249316b -> 36389f7d8


Cleanup from 5025, allow recovering nodes to pull immediately


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/36389f7d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/36389f7d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/36389f7d

Branch: refs/heads/trunk
Commit: 36389f7d8d59881cad309b078fc89df5864fd6d1
Parents: ff24931
Author: Brandon Williams <br...@apache.org>
Authored: Fri Dec 7 17:23:40 2012 -0600
Committer: Brandon Williams <br...@apache.org>
Committed: Fri Dec 7 17:33:57 2012 -0600

----------------------------------------------------------------------
 .../apache/cassandra/service/MigrationManager.java |   13 ++++++++++---
 .../apache/cassandra/service/StorageService.java   |    5 ++---
 2 files changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/36389f7d/src/java/org/apache/cassandra/service/MigrationManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/MigrationManager.java b/src/java/org/apache/cassandra/service/MigrationManager.java
index 867a9fb..43fa8f7 100644
--- a/src/java/org/apache/cassandra/service/MigrationManager.java
+++ b/src/java/org/apache/cassandra/service/MigrationManager.java
@@ -28,6 +28,9 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -58,6 +61,10 @@ public class MigrationManager implements IEndpointStateChangeSubscriber
 
     public static final MigrationManager instance = new MigrationManager();
 
+    private static final RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
+
+    public static final int MIGRATION_DELAY_IN_MS = 60000;
+
     private final List<IMigrationListener> listeners = new CopyOnWriteArrayList<IMigrationListener>();
 
     private MigrationManager() {}
@@ -113,9 +120,9 @@ public class MigrationManager implements IEndpointStateChangeSubscriber
         if (Schema.instance.getVersion().equals(theirVersion))
             return;
 
-        if (Schema.emptyVersion.equals(Schema.instance.getVersion()))
+        if (Schema.emptyVersion.equals(Schema.instance.getVersion()) || runtimeMXBean.getUptime() < MIGRATION_DELAY_IN_MS)
         {
-            // If we think we may be bootstrapping, submit MigrationTask immediately
+            // If we think we may be bootstrapping or have recently started, submit MigrationTask immediately
             submitMigrationTask(endpoint);
         }
         else
@@ -135,7 +142,7 @@ public class MigrationManager implements IEndpointStateChangeSubscriber
                     submitMigrationTask(endpoint);
                 }
             };
-            StorageService.optionalTasks.schedule(runnable, 1, TimeUnit.MINUTES);
+            StorageService.optionalTasks.schedule(runnable, MIGRATION_DELAY_IN_MS, TimeUnit.MILLISECONDS);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/36389f7d/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 1936a35..12df15f 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -527,8 +527,8 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
         // gossip snitch infos (local DC and rack)
         gossipSnitchInfo();
         // gossip Schema.emptyVersion forcing immediate check for schema updates (see MigrationManager#maybeScheduleSchemaPull)
-        Schema.instance.updateVersion(); // Ensure we know our own actual Schema UUID in preparation for updates
-        MigrationManager.passiveAnnounce(Schema.emptyVersion);
+        Schema.instance.updateVersionAndAnnounce(); // Ensure we know our own actual Schema UUID in preparation for updates
+
         // add rpc listening info
         Gossiper.instance.addLocalApplicationState(ApplicationState.RPC_ADDRESS, valueFactory.rpcaddress(DatabaseDescriptor.getRpcAddress()));
         if (0 != DatabaseDescriptor.getReplaceTokens().size())
@@ -536,7 +536,6 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
 
         MessagingService.instance().listen(FBUtilities.getLocalAddress());
         LoadBroadcaster.instance.startBroadcasting();
-        MigrationManager.passiveAnnounce(Schema.instance.getVersion());
         Gossiper.instance.addLocalApplicationState(ApplicationState.RELEASE_VERSION, valueFactory.releaseVersion());
 
         HintedHandOffManager.instance.start();