Repository: cassandra Updated Branches: refs/heads/trunk 5bbc54fe7 -> 99fbafee3
fix cassandra stress errors on reads with native protocol patch by belliottsmith; reviewed by jasobrown 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/a16adba9 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a16adba9 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a16adba9 Branch: refs/heads/trunk Commit: a16adba9b89661f95d167d056d128ed388c4e7a7 Parents: 5045d3e Author: Jason Brown <jasobr...@apple.com> Authored: Tue Apr 22 10:04:11 2014 -0700 Committer: Jason Brown <jasobr...@apple.com> Committed: Tue Apr 22 10:09:58 2014 -0700 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../operations/CqlIndexedRangeSlicer.java | 9 ++----- .../stress/operations/CqlOperation.java | 14 ++++------- .../cassandra/stress/operations/CqlReader.java | 26 +++++++++++--------- 4 files changed, 22 insertions(+), 28 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/a16adba9/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 2f70c63..844df95 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -48,6 +48,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/a16adba9/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 c971844..046381e 100644 --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java @@ -47,13 +47,8 @@ public class CqlIndexedRangeSlicer extends CqlOperation<byte[][]> @Override protected String buildQuery() { - StringBuilder query = new StringBuilder("SELECT "); - - if (state.isCql2()) - query.append(state.settings.columns.maxColumnsPerKey).append(" ''..''"); - else - query.append("*"); - + StringBuilder query = new StringBuilder("SELECT"); + query.append(wrapInQuotesIfRequired("key")); query.append(" FROM "); query.append(wrapInQuotesIfRequired(state.type.table)); http://git-wip-us.apache.org/repos/asf/cassandra/blob/a16adba9/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 5b27146..1c59e2d 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; } } @@ -510,9 +506,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/a16adba9/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 4b8d69e..fb07edc 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,14 @@ package org.apache.cassandra.stress.operations; import java.nio.ByteBuffer; +import java.nio.charset.CharacterCodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import org.apache.cassandra.utils.ByteBufferUtil; + public class CqlReader extends CqlOperation<ByteBuffer[][]> { @@ -49,11 +52,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(wrapInQuotesIfRequired(ByteBufferUtil.string(state.settings.columns.names.get(i)))); + } + } + catch (CharacterCodingException e) { - if (i > 0) - query.append(","); - query.append('?'); + throw new IllegalStateException(e); } } @@ -68,14 +78,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)); }