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 2014/09/29 16:53:01 UTC
[6/8] git commit: Ignore fat clients when checking for endpoint
collision
Ignore fat clients when checking for endpoint collision
Patch by brandonwilliams, reviewed by tjake for CASSANDRA-7939
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3ece6f23
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3ece6f23
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3ece6f23
Branch: refs/heads/trunk
Commit: 3ece6f2399fa15c97d889c5d43b4a7457825e8e1
Parents: 5f18658
Author: Brandon Williams <br...@apache.org>
Authored: Mon Sep 29 09:52:09 2014 -0500
Committer: Brandon Williams <br...@apache.org>
Committed: Mon Sep 29 09:52:09 2014 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/service/StorageService.java | 16 +++++++++++++++-
2 files changed, 16 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3ece6f23/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index fca7ccb..354cb5d 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.1.1
+ * Ignore fat clients when checking for endpoint collision (CASSANDRA-7939)
* Make sstablerepairedset take a list of files (CASSANDRA-7995)
* (cqlsh) Tab completeion for indexes on map keys (CASSANDRA-7972)
* (cqlsh) Fix UDT field selection in select clause (CASSANDRA-7891)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3ece6f23/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 a005c44..d2cb1ab 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -453,12 +453,26 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
MessagingService.instance().listen(FBUtilities.getLocalAddress());
Gossiper.instance.doShadowRound();
EndpointState epState = Gossiper.instance.getEndpointStateForEndpoint(FBUtilities.getBroadcastAddress());
- if (epState != null && !Gossiper.instance.isDeadState(epState))
+ if (epState != null && !Gossiper.instance.isDeadState(epState) && !Gossiper.instance.isFatClient(FBUtilities.getBroadcastAddress()))
{
throw new RuntimeException(String.format("A node with address %s already exists, cancelling join. " +
"Use cassandra.replace_address if you want to replace this node.",
FBUtilities.getBroadcastAddress()));
}
+ if (RangeStreamer.useStrictConsistency)
+ {
+ for (Map.Entry<InetAddress, EndpointState> entry : Gossiper.instance.getEndpointStates())
+ {
+
+ if (entry.getValue().getApplicationState(ApplicationState.STATUS) == null)
+ continue;
+ String[] pieces = entry.getValue().getApplicationState(ApplicationState.STATUS).value.split(VersionedValue.DELIMITER_STR, -1);
+ assert (pieces.length > 0);
+ String state = pieces[0];
+ if (state.equals(VersionedValue.STATUS_BOOTSTRAPPING) || state.equals(VersionedValue.STATUS_LEAVING) || state.equals(VersionedValue.STATUS_MOVING))
+ throw new UnsupportedOperationException("Other bootstrapping/leaving/moving nodes detected, cannot bootstrap while cassandra.consistent.rangemovement is true");
+ }
+ }
Gossiper.instance.resetEndpointStateMap();
}