Repository: cassandra Updated Branches: refs/heads/trunk e964c0278 -> 7aaa390b9
Fix stress smart Thrift client to pick servers correctly patch by Benedict Elliott Smith; reviewed by Pavel Yaskevich for CASSANDRA-6848 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/df43d4e7 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/df43d4e7 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/df43d4e7 Branch: refs/heads/trunk Commit: df43d4e73d28bb2ad9c7377bdc2ab02cbcd80248 Parents: d227aa0 Author: Pavel Yaskevich <[email protected]> Authored: Thu Mar 13 17:51:57 2014 -0700 Committer: Pavel Yaskevich <[email protected]> Committed: Thu Mar 13 17:52:24 2014 -0700 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../apache/cassandra/stress/util/SmartThriftClient.java | 12 +++++------- 2 files changed, 6 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/df43d4e7/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 4d9bc07..05f1048 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -17,6 +17,7 @@ * Change caching option syntax (CASSANDRA-6745) * Fix stress to do proper counter reads (CASSANDRA-6835) * Fix help message for stress counter_write (CASSANDRA-6824) + * Fix stress smart Thrift client to pick servers correctly (CASSANDRA-6848) Merged from 2.0: * Fix leaking validator FH in StreamWriter (CASSANDRA-6832) * fix nodetool getsstables for blob PK (CASSANDRA-6803) http://git-wip-us.apache.org/repos/asf/cassandra/blob/df43d4e7/tools/stress/src/org/apache/cassandra/stress/util/SmartThriftClient.java ---------------------------------------------------------------------- diff --git a/tools/stress/src/org/apache/cassandra/stress/util/SmartThriftClient.java b/tools/stress/src/org/apache/cassandra/stress/util/SmartThriftClient.java index 48d8b64..2782a05 100644 --- a/tools/stress/src/org/apache/cassandra/stress/util/SmartThriftClient.java +++ b/tools/stress/src/org/apache/cassandra/stress/util/SmartThriftClient.java @@ -29,6 +29,7 @@ import java.util.concurrent.atomic.AtomicInteger; import com.datastax.driver.core.Host; import com.datastax.driver.core.Metadata; +import com.google.common.collect.Iterators; import org.apache.cassandra.stress.settings.StressSettings; import org.apache.cassandra.thrift.*; import org.apache.cassandra.utils.ByteBufferUtil; @@ -108,13 +109,10 @@ public class SmartThriftClient implements ThriftClient private Client get(ByteBuffer pk) { Set<Host> hosts = metadata.getReplicas(metadata.quote(keyspace), pk); - int count = roundrobin.incrementAndGet() % hosts.size(); - if (count < 0) - count = -count; - Iterator<Host> iter = hosts.iterator(); - while (count > 0 && iter.hasNext()) - iter.next(); - Host host = iter.next(); + int pos = roundrobin.incrementAndGet() % hosts.size(); + if (pos < 0) + pos = -pos; + Host host = Iterators.get(hosts.iterator(), pos); ConcurrentLinkedQueue<Client> q = cache.get(host); if (q == null) {
