Updated Branches: refs/heads/cassandra-1.2 3a4d10ff6 -> bb3ec4ce9
Avoid sending Truncate command to fat clients patch by Oleg Anastasyev; reviewed by jbellis for CASSANDRA-6088 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/bb3ec4ce Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/bb3ec4ce Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/bb3ec4ce Branch: refs/heads/cassandra-1.2 Commit: bb3ec4ce9ec020d0bf7963517f802c2b86e9047a Parents: 3a4d10f Author: Jonathan Ellis <jbel...@apache.org> Authored: Tue Sep 24 10:12:20 2013 -0500 Committer: Jonathan Ellis <jbel...@apache.org> Committed: Tue Sep 24 10:12:20 2013 -0500 ---------------------------------------------------------------------- CHANGES.txt | 1 + src/java/org/apache/cassandra/gms/Gossiper.java | 20 ++++++++++++++++---- .../apache/cassandra/service/StorageProxy.java | 4 ++-- 3 files changed, 19 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/bb3ec4ce/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index cecb88a..ae2ab5e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 1.2.11 + * Avoid sending Truncate command to fat clients (CASSANDRA-6088) * Allow cache-keys-to-save to be set at runtime (CASSANDRA-5980) * Allow where clause conditions to be in parenthesis (CASSANDRA-6037) * Do not open non-ssl storage port if encryption option is all (CASSANDRA-3916) http://git-wip-us.apache.org/repos/asf/cassandra/blob/bb3ec4ce/src/java/org/apache/cassandra/gms/Gossiper.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java b/src/java/org/apache/cassandra/gms/Gossiper.java index b4ea88a..acf40f3 100644 --- a/src/java/org/apache/cassandra/gms/Gossiper.java +++ b/src/java/org/apache/cassandra/gms/Gossiper.java @@ -218,10 +218,22 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean public Set<InetAddress> getLiveMembers() { - Set<InetAddress> liveMbrs = new HashSet<InetAddress>(liveEndpoints); - if (!liveMbrs.contains(FBUtilities.getBroadcastAddress())) - liveMbrs.add(FBUtilities.getBroadcastAddress()); - return liveMbrs; + Set<InetAddress> liveMembers = new HashSet<InetAddress>(liveEndpoints); + if (!liveMembers.contains(FBUtilities.getBroadcastAddress())) + liveMembers.add(FBUtilities.getBroadcastAddress()); + return liveMembers; + } + + public Set<InetAddress> getLiveTokenOwners() + { + Set<InetAddress> tokenOwners = new HashSet<InetAddress>(); + for (InetAddress member : getLiveMembers()) + { + EndpointState epState = endpointStateMap.get(member); + if (epState != null && !isDeadState(epState) && StorageService.instance.getTokenMetadata().isMember(member)) + tokenOwners.add(member); + } + return tokenOwners; } public Set<InetAddress> getUnreachableMembers() http://git-wip-us.apache.org/repos/asf/cassandra/blob/bb3ec4ce/src/java/org/apache/cassandra/service/StorageProxy.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java index be92213..8a6e52e 100644 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@ -25,7 +25,6 @@ import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicLong; import javax.management.MBeanServer; import javax.management.ObjectName; @@ -1551,7 +1550,8 @@ public class StorageProxy implements StorageProxyMBean throw new UnavailableException(ConsistencyLevel.ALL, liveMembers + Gossiper.instance.getUnreachableMembers().size(), liveMembers); } - Set<InetAddress> allEndpoints = Gossiper.instance.getLiveMembers(); + Set<InetAddress> allEndpoints = Gossiper.instance.getLiveTokenOwners(); + int blockFor = allEndpoints.size(); final TruncateResponseHandler responseHandler = new TruncateResponseHandler(blockFor);