diff --git a/CHANGES.txt b/CHANGES.txt index 1304f34e90..249827043e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.0 + * Add SERIAL and LOCAL_SERIAL support for cassandra-stress (CASSANDRA-13925) * LCS needlessly checks for L0 STCS candidates multiple times (CASSANDRA-12961) * Correctly close netty channels when a stream session ends (CASSANDRA-13905) * Update lz4 to 1.4.0 (CASSANDRA-13741) diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaInsert.java b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaInsert.java index 4e8249274b..4cfea8265e 100644 --- a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaInsert.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaInsert.java @@ -97,7 +97,10 @@ public class SchemaInsert extends SchemaStatement else { BatchStatement batch = new BatchStatement(batchType); - batch.setConsistencyLevel(JavaDriverClient.from(cl)); + if (cl.isSerialConsistency()) + batch.setSerialConsistencyLevel(JavaDriverClient.from(cl)); + else + batch.setConsistencyLevel(JavaDriverClient.from(cl)); batch.addAll(substmts); stmt = batch; } diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java index 94df2c2fb1..6bd3fd5893 100644 --- a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java @@ -58,7 +58,12 @@ public abstract class SchemaStatement extends PartitionOperation argumentIndex[i++] = spec.partitionGenerator.indexOf(name); if (statement != null) - statement.setConsistencyLevel(JavaDriverClient.from(cl)); + { + if (cl.isSerialConsistency()) + statement.setSerialConsistencyLevel(JavaDriverClient.from(cl)); + else + statement.setConsistencyLevel(JavaDriverClient.from(cl)); + } } BoundStatement bindRow(Row row) diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java index e7d7d5684d..6d93f4cc51 100644 --- a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java @@ -60,7 +60,12 @@ public class ValidatingSchemaQuery extends PartitionOperation argumentIndex[i++] = spec.partitionGenerator.indexOf(definition.getName()); for (ValidatingStatement statement : statements) - statement.statement.setConsistencyLevel(JavaDriverClient.from(cl)); + { + if (cl.isSerialConsistency()) + statement.statement.setSerialConsistencyLevel(JavaDriverClient.from(cl)); + else + statement.statement.setConsistencyLevel(JavaDriverClient.from(cl)); + } this.clusteringComponents = clusteringComponents; } diff --git a/tools/stress/src/org/apache/cassandra/stress/settings/SettingsCommand.java b/tools/stress/src/org/apache/cassandra/stress/settings/SettingsCommand.java index 0442e1cd95..314774a0c5 100644 --- a/tools/stress/src/org/apache/cassandra/stress/settings/SettingsCommand.java +++ b/tools/stress/src/org/apache/cassandra/stress/settings/SettingsCommand.java @@ -123,7 +123,7 @@ public abstract class SettingsCommand implements Serializable { final OptionSimple noWarmup = new OptionSimple("no-warmup", "", null, "Do not warmup the process", false); final OptionSimple truncate = new OptionSimple("truncate=", "never|once|always", "never", "Truncate the table: never, before performing any work, or before each iteration", false); - final OptionSimple consistencyLevel = new OptionSimple("cl=", "ONE|QUORUM|LOCAL_QUORUM|EACH_QUORUM|ALL|ANY|TWO|THREE|LOCAL_ONE", "LOCAL_ONE", "Consistency level to use", false); + final OptionSimple consistencyLevel = new OptionSimple("cl=", "ONE|QUORUM|LOCAL_QUORUM|EACH_QUORUM|ALL|ANY|TWO|THREE|LOCAL_ONE|SERIAL|LOCAL_SERIAL", "LOCAL_ONE", "Consistency level to use", false); } static class Count extends Options diff --git a/tools/stress/src/org/apache/cassandra/stress/util/JavaDriverClient.java b/tools/stress/src/org/apache/cassandra/stress/util/JavaDriverClient.java index 3a7c51311c..d404653dcf 100644 --- a/tools/stress/src/org/apache/cassandra/stress/util/JavaDriverClient.java +++ b/tools/stress/src/org/apache/cassandra/stress/util/JavaDriverClient.java @@ -185,13 +185,24 @@ public class JavaDriverClient public ResultSet execute(String query, org.apache.cassandra.db.ConsistencyLevel consistency) { SimpleStatement stmt = new SimpleStatement(query); - stmt.setConsistencyLevel(from(consistency)); + + if (consistency.isSerialConsistency()) + stmt.setSerialConsistencyLevel(from(consistency)); + else + stmt.setConsistencyLevel(from(consistency)); return getSession().execute(stmt); } public ResultSet executePrepared(PreparedStatement stmt, List queryParams, org.apache.cassandra.db.ConsistencyLevel consistency) { - stmt.setConsistencyLevel(from(consistency)); + if (consistency.isSerialConsistency()) + { + stmt.setSerialConsistencyLevel(from(consistency)); + } + else + { + stmt.setConsistencyLevel(from(consistency)); + } BoundStatement bstmt = stmt.bind((Object[]) queryParams.toArray(new Object[queryParams.size()])); return getSession().execute(bstmt); } @@ -225,6 +236,10 @@ public class JavaDriverClient return com.datastax.driver.core.ConsistencyLevel.EACH_QUORUM; case LOCAL_ONE: return com.datastax.driver.core.ConsistencyLevel.LOCAL_ONE; + case SERIAL: + return com.datastax.driver.core.ConsistencyLevel.SERIAL; + case LOCAL_SERIAL: + return com.datastax.driver.core.ConsistencyLevel.LOCAL_SERIAL; } throw new AssertionError(); }