Repository: cassandra Updated Branches: refs/heads/trunk 15e7ac7d3 -> 5bbc54fe7
merged cassandra-2.1 to trunk (for CASSANDRA-7033) Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5bbc54fe Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5bbc54fe Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5bbc54fe Branch: refs/heads/trunk Commit: 5bbc54fe70b95611f8397c36dcd07fa3605627a1 Parents: 15e7ac7 Author: Jason Brown <jasobr...@apple.com> Authored: Tue Apr 22 10:37:49 2014 -0700 Committer: Jason Brown <jasobr...@apple.com> Committed: Tue Apr 22 10:37:49 2014 -0700 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../operations/CqlIndexedRangeSlicer.java | 9 ++++--- .../stress/operations/CqlOperation.java | 14 ++++------ .../cassandra/stress/operations/CqlReader.java | 27 ++++++++++---------- 4 files changed, 26 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bbc54fe/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 284f8a6..fa1e3af 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -57,6 +57,7 @@ * Clean up IndexInfo on keyspace/table drops (CASSANDRA-6924) * Only snapshot relative SSTables when sequential repair (CASSANDRA-7024) * Require nodetool rebuild_index to specify index names (CASSANDRA-7038) + * fix cassandra stress errors on reads with native protocol (CASANDRA-7033) Merged from 2.0: * Use LOCAL_QUORUM for data reads at LOCAL_SERIAL (CASSANDRA-6939) * Log a warning for large batches (CASSANDRA-6487) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bbc54fe/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java ---------------------------------------------------------------------- diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java b/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java index 6febe26..961c8fe 100644 --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java @@ -47,10 +47,13 @@ public class CqlIndexedRangeSlicer extends CqlOperation<byte[][]> @Override protected String buildQuery() { - final String indexColumn = (state.settings.columns.namestrs.get(1)); - StringBuilder query = new StringBuilder("SELECT * FROM "); + StringBuilder query = new StringBuilder("SELECT"); + query.append(wrapInQuotes("key")); + query.append(" FROM "); query.append(wrapInQuotes(state.type.table)); - query.append(" WHERE ").append(indexColumn).append("=?") + + final String columnName = (state.settings.columns.namestrs.get(1)); + query.append(" WHERE ").append(columnName).append("=?") .append(" AND KEY > ? LIMIT ").append(state.settings.command.keysAtOnce); return query.toString(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bbc54fe/tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java ---------------------------------------------------------------------- diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java b/tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java index 6da145e..11fb637 100644 --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java @@ -145,7 +145,7 @@ public abstract class CqlOperation<V> extends Operation @Override public boolean validate(Integer result) { - return true; + return result > 0; } @Override @@ -195,12 +195,8 @@ public abstract class CqlOperation<V> extends Operation if (result.length != expect.size()) return false; for (int i = 0 ; i < result.length ; i++) - { - List<ByteBuffer> resultRow = Arrays.asList(result[i]); - resultRow = resultRow.subList(1, resultRow.size()); - if (expect.get(i) != null && !expect.get(i).equals(resultRow)) + if (expect.get(i) != null && !expect.get(i).equals(Arrays.asList(result[i]))) return false; - } return true; } } @@ -473,9 +469,9 @@ public abstract class CqlOperation<V> extends Operation for (int i = 0 ; i < r.length ; i++) { Row row = rows.get(i); - r[i] = new ByteBuffer[row.getColumnDefinitions().size() - 1]; - for (int j = 1 ; j < row.getColumnDefinitions().size() ; j++) - r[i][j - 1] = row.getBytes(j); + r[i] = new ByteBuffer[row.getColumnDefinitions().size()]; + for (int j = 0 ; j < row.getColumnDefinitions().size() ; j++) + r[i][j] = row.getBytes(j); } return r; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/5bbc54fe/tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java ---------------------------------------------------------------------- diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java b/tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java index c9d8870..b2ea8c1 100644 --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java @@ -22,11 +22,13 @@ package org.apache.cassandra.stress.operations; import java.nio.ByteBuffer; -import java.util.ArrayList; +import java.nio.charset.CharacterCodingException; import java.util.Arrays; import java.util.Collections; import java.util.List; +import org.apache.cassandra.utils.ByteBufferUtil; + public class CqlReader extends CqlOperation<ByteBuffer[][]> { @@ -46,11 +48,18 @@ public class CqlReader extends CqlOperation<ByteBuffer[][]> } else { - for (int i = 0; i < state.settings.columns.names.size() ; i++) + try + { + for (int i = 0; i < state.settings.columns.names.size() ; i++) + { + if (i > 0) + query.append(","); + query.append(wrapInQuotes(ByteBufferUtil.string(state.settings.columns.names.get(i)))); + } + } + catch (CharacterCodingException e) { - if (i > 0) - query.append(","); - query.append('?'); + throw new IllegalStateException(e); } } @@ -63,14 +72,6 @@ public class CqlReader extends CqlOperation<ByteBuffer[][]> @Override protected List<Object> getQueryParameters(byte[] key) { - if (state.settings.columns.names != null) - { - final List<Object> queryParams = new ArrayList<>(); - for (ByteBuffer name : state.settings.columns.names) - queryParams.add(name); - queryParams.add(ByteBuffer.wrap(key)); - return queryParams; - } return Collections.<Object>singletonList(ByteBuffer.wrap(key)); }