Don't allow simultaneous bootstrap when cassandra.consistent.rangemovement is true
Patch by brandonwilliams, reviewed by tjake for CASSANDRA-7069 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/094aa8ef Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/094aa8ef Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/094aa8ef Branch: refs/heads/trunk Commit: 094aa8ef2be1f1c832b6baa7e2f25a1f220b279e Parents: db3cc3e Author: Brandon Williams <brandonwilli...@apache.org> Authored: Mon Sep 15 06:52:35 2014 +0000 Committer: Brandon Williams <brandonwilli...@apache.org> Committed: Mon Sep 15 06:52:35 2014 +0000 ---------------------------------------------------------------------- CHANGES.txt | 1 + src/java/org/apache/cassandra/service/StorageService.java | 8 ++++++++ 2 files changed, 9 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/094aa8ef/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 7e18719..608e4b1 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.1 + * Prevent operator mistakes due to simultaneous bootstrap (CASSANDRA-7069) * cassandra-stress supports whitelist mode for node config * GCInspector more closely tracks GC; cassandra-stress and nodetool report it * nodetool won't output bogus ownership info without a keyspace (CASSANDRA-7173) http://git-wip-us.apache.org/repos/asf/cassandra/blob/094aa8ef/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 86412ba..1aa3b24 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -748,6 +748,14 @@ public class StorageService extends NotificationBroadcasterSupport implements IE if (logger.isDebugEnabled()) logger.debug("... got ring + schema info"); + if (Boolean.parseBoolean(System.getProperty("cassandra.consistent.rangemovement", "true")) && + ( + tokenMetadata.getBootstrapTokens().valueSet().size() > 0 || + tokenMetadata.getLeavingEndpoints().size() > 0 || + tokenMetadata.getMovingEndpoints().size() > 0 + )) + throw new UnsupportedOperationException("Other bootstrapping/leaving/moving nodes detected, cannot bootstrap while cassandra.consistent.rangemovement is true"); + if (!DatabaseDescriptor.isReplacing()) { if (tokenMetadata.isMember(FBUtilities.getBroadcastAddress()))