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/ec7a5f10 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/ec7a5f10 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/ec7a5f10 Branch: refs/heads/trunk Commit: ec7a5f1040545905016feb18ee5e31224eae624c Parents: c9ce1f0 Author: Brandon Williams <brandonwilli...@apache.org> Authored: Fri Dec 7 17:23:40 2012 -0600 Committer: Brandon Williams <brandonwilli...@apache.org> Committed: Fri Dec 7 17:23:40 2012 -0600 ---------------------------------------------------------------------- .../apache/cassandra/service/MigrationManager.java | 13 ++++++++++--- .../apache/cassandra/service/StorageService.java | 4 +--- 2 files changed, 11 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/ec7a5f10/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 72a9a84..9a82517 100644 --- a/src/java/org/apache/cassandra/service/MigrationManager.java +++ b/src/java/org/apache/cassandra/service/MigrationManager.java @@ -33,6 +33,9 @@ import java.util.Collection; import java.util.UUID; import java.util.concurrent.TimeUnit; +import java.lang.management.ManagementFactory; +import java.lang.management.RuntimeMXBean; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -65,6 +68,10 @@ public class MigrationManager implements IEndpointStateChangeSubscriber private static final int MIGRATION_REQUEST_RETRIES = 3; private static final ByteBuffer LAST_MIGRATION_KEY = ByteBufferUtil.bytes("Last Migration"); + private static final RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); + + public static final int MIGRATION_DELAY_IN_MS = 60000; + public void onJoin(InetAddress endpoint, EndpointState epState) {} @@ -106,9 +113,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 @@ -128,7 +135,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/ec7a5f10/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 d041279..a948786 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -546,8 +546,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe Gossiper.instance.start(SystemTable.incrementAndGetGeneration()); // needed for node-ring gathering. // 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())); @@ -556,7 +555,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();