diff --git a/build.xml b/build.xml
index 26f1194f78..c4d6b0cc21 100644
--- a/build.xml
+++ b/build.xml
@@ -1020,6 +1020,7 @@ url=${svn.entry.url}?pathrev=${svn.entry.commit.revision}
+
@@ -1028,6 +1029,7 @@ url=${svn.entry.url}?pathrev=${svn.entry.commit.revision}
+
@@ -1054,6 +1056,7 @@ url=${svn.entry.url}?pathrev=${svn.entry.commit.revision}
+
diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java b/src/java/org/apache/cassandra/gms/Gossiper.java
index 493b12c35a..9e88a7867b 100644
--- a/src/java/org/apache/cassandra/gms/Gossiper.java
+++ b/src/java/org/apache/cassandra/gms/Gossiper.java
@@ -377,9 +377,8 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
* @param endpoint - the endpoint being removed
* @param token - the token being removed
* @param mytoken - my own token for replication coordination
- * @param delay
*/
- public void advertiseRemoving(InetAddress endpoint, Token token, Token mytoken, int delay)
+ public void advertiseRemoving(InetAddress endpoint, Token token, Token mytoken)
{
EndpointState epState = endpointStateMap.get(endpoint);
// remember this node's generation
@@ -388,7 +387,7 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean
logger.info("Sleeping for " + StorageService.RING_DELAY + "ms to ensure " + endpoint + " does not change");
try
{
- Thread.sleep(delay);
+ Thread.sleep(StorageService.RING_DELAY);
}
catch (InterruptedException e)
{
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 42ee67aef0..e7c9ca33e4 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -79,7 +79,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
{
private static Logger logger_ = LoggerFactory.getLogger(StorageService.class);
- public static final int RING_DELAY = 30 * 1000; // delay after which we assume ring has stablized
+ public static final int RING_DELAY = getRingDelay(); // delay after which we assume ring has stablized
/* All verb handler identifiers */
public enum Verb
@@ -150,6 +150,17 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
put(Verb.UNUSED_3, Stage.INTERNAL_RESPONSE);
}};
+ private static int getRingDelay()
+ {
+ String newdelay = System.getProperty("cassandra.ring_delay_ms");
+ if (newdelay != null)
+ {
+ logger_.warn("Overriding RING_DELAY to {}ms", newdelay);
+ return Integer.parseInt(newdelay);
+ }
+ else
+ return 30 * 1000;
+ }
/**
* This pool is used for periodic short (sub-second) tasks.
@@ -2328,11 +2339,6 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
* @param tokenString token for the node
*/
public void removeToken(String tokenString)
- {
- removeToken(tokenString, RING_DELAY);
- }
-
- public void removeToken(String tokenString, int delay)
{
InetAddress myAddress = FBUtilities.getBroadcastAddress();
Token localToken = tokenMetadata_.getToken(myAddress);
@@ -2380,7 +2386,7 @@ public class StorageService implements IEndpointStateChangeSubscriber, StorageSe
calculatePendingRanges();
// the gossiper will handle spoofing this node's state to REMOVING_TOKEN for us
// we add our own token so other nodes to let us know when they're done
- Gossiper.instance.advertiseRemoving(endpoint, token, localToken, delay);
+ Gossiper.instance.advertiseRemoving(endpoint, token, localToken);
// kick off streaming commands
restoreReplicaCount(endpoint, myAddress);
diff --git a/test/cassandra.in.sh b/test/cassandra.in.sh
index 47514f28b6..682327f7d4 100644
--- a/test/cassandra.in.sh
+++ b/test/cassandra.in.sh
@@ -50,4 +50,5 @@ JVM_OPTS=" \
-XX:+HeapDumpOnOutOfMemoryError \
-Dcom.sun.management.jmxremote.port=8090 \
-Dcom.sun.management.jmxremote.ssl=false \
- -Dcom.sun.management.jmxremote.authenticate=false"
+ -Dcom.sun.management.jmxremote.authenticate=false \
+ -Dcassandra.ring_delay_ms=1000"
diff --git a/test/unit/org/apache/cassandra/service/RemoveTest.java b/test/unit/org/apache/cassandra/service/RemoveTest.java
index 7bfa385cf9..c394e8f033 100644
--- a/test/unit/org/apache/cassandra/service/RemoveTest.java
+++ b/test/unit/org/apache/cassandra/service/RemoveTest.java
@@ -125,7 +125,7 @@ public class RemoveTest extends CleanupHelper
{
try
{
- ss.removeToken(token, 0);
+ ss.removeToken(token);
}
catch (Exception e)
{