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 <[email protected]> Authored: Fri Dec 7 17:23:40 2012 -0600 Committer: Brandon Williams <[email protected]> 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();
