Updated Branches:
  refs/heads/trunk b983c816c -> c5df20832

fix counter add/get using CQL2 and CQL3 in stress tool
patch by Aleksey Yeschenko; reviewed by Pavel Yaskevich for CASSANDRA-4633


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c5df2083
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c5df2083
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c5df2083

Branch: refs/heads/trunk
Commit: c5df208327826dd197f1a9f743243bcd53de50f5
Parents: b983c81
Author: Pavel Yaskevich <[email protected]>
Authored: Tue Sep 11 22:52:01 2012 +0300
Committer: Pavel Yaskevich <[email protected]>
Committed: Tue Sep 11 22:52:01 2012 +0300

----------------------------------------------------------------------
 CHANGES.txt                                        |    1 +
 .../src/org/apache/cassandra/stress/Session.java   |   47 +++++++++++++--
 .../stress/operations/CqlCounterAdder.java         |    9 ++-
 .../stress/operations/CqlCounterGetter.java        |   17 ++++-
 4 files changed, 62 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/c5df2083/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 1af1a4a..8d373cf 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -59,6 +59,7 @@
  * update stress tool to be able to use CQL3 (CASSANDRA-4406)
  * Accept all thrift update on CQL3 cf but don't expose their metadata 
(CASSANDRA-4377)
  * Replace Throttle with Guava's RateLimiter for HintedHandOff (CASSANDRA-4541)
+ * fix counter add/get using CQL2 and CQL3 in stress tool (CASSANDRA-4633)
 
 
 1.1.6

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c5df2083/tools/stress/src/org/apache/cassandra/stress/Session.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/Session.java 
b/tools/stress/src/org/apache/cassandra/stress/Session.java
index eb1a902..8148522 100644
--- a/tools/stress/src/org/apache/cassandra/stress/Session.java
+++ b/tools/stress/src/org/apache/cassandra/stress/Session.java
@@ -47,6 +47,7 @@ public class Session implements Serializable
     // command line options
     public static final Options availableOptions = new Options();
 
+    public static final String KEYSPACE_NAME = "Keyspace1";
     public static final String DEFAULT_COMPARATOR = "AsciiType";
     public static final String DEFAULT_VALIDATOR  = "BytesType";
 
@@ -535,7 +536,7 @@ public class Session implements Serializable
     }
 
     /**
-     * Create Keyspace1 with Standard1 and Super1 column families
+     * Create Keyspace with Standard and Super/Counter column families
      */
     public void createKeySpaces()
     {
@@ -543,7 +544,7 @@ public class Session implements Serializable
         String defaultComparator = comparator == null ? DEFAULT_COMPARATOR : 
comparator;
 
         // column family for standard columns
-        CfDef standardCfDef = new CfDef("Keyspace1", "Standard1");
+        CfDef standardCfDef = new CfDef(KEYSPACE_NAME, "Standard1");
         Map<String, String> compressionOptions = new HashMap<String, String>();
         if (compression != null)
             compressionOptions.put("sstable_compression", compression);
@@ -568,19 +569,27 @@ public class Session implements Serializable
         }
 
         // column family with super columns
-        CfDef superCfDef = new CfDef("Keyspace1", 
"Super1").setColumn_type("Super");
+        CfDef superCfDef = new CfDef(KEYSPACE_NAME, 
"Super1").setColumn_type("Super");
         superCfDef.setComparator_type(DEFAULT_COMPARATOR)
                   .setSubcomparator_type(defaultComparator)
                   .setDefault_validation_class(DEFAULT_VALIDATOR)
                   .setCompression_options(compressionOptions);
 
         // column family for standard counters
-        CfDef counterCfDef = new CfDef("Keyspace1", 
"Counter1").setDefault_validation_class("CounterColumnType").setReplicate_on_write(replicateOnWrite).setCompression_options(compressionOptions);
+        CfDef counterCfDef = new CfDef(KEYSPACE_NAME, 
"Counter1").setComparator_type(defaultComparator)
+                                                                 
.setComparator_type(defaultComparator)
+                                                                 
.setDefault_validation_class("CounterColumnType")
+                                                                 
.setReplicate_on_write(replicateOnWrite)
+                                                                 
.setCompression_options(compressionOptions);
 
         // column family with counter super columns
-        CfDef counterSuperCfDef = new CfDef("Keyspace1", 
"SuperCounter1").setDefault_validation_class("CounterColumnType").setReplicate_on_write(replicateOnWrite).setColumn_type("Super").setCompression_options(compressionOptions);
+        CfDef counterSuperCfDef = new CfDef(KEYSPACE_NAME, 
"SuperCounter1").setComparator_type(defaultComparator)
+                                                                           
.setDefault_validation_class("CounterColumnType")
+                                                                           
.setReplicate_on_write(replicateOnWrite)
+                                                                           
.setColumn_type("Super")
+                                                                           
.setCompression_options(compressionOptions);
 
-        keyspace.setName("Keyspace1");
+        keyspace.setName(KEYSPACE_NAME);
         keyspace.setStrategy_class(replicationStrategy);
 
         if (!replicationStrategyOptions.isEmpty())
@@ -603,6 +612,17 @@ public class Session implements Serializable
         try
         {
             client.system_add_keyspace(keyspace);
+
+            /* CQL3 counter cf */
+            client.set_cql_version("3.0.0"); // just to create counter cf for 
cql3
+
+            client.set_keyspace(KEYSPACE_NAME);
+            client.execute_cql_query(createCounterCFStatementForCQL3(), 
Compression.NONE);
+
+            if (enable_cql)
+                client.set_cql_version(cqlVersion);
+            /* end */
+
             System.out.println(String.format("Created keyspaces. Sleeping %ss 
for propagation.", nodes.length));
             Thread.sleep(nodes.length * 1000); // seconds
         }
@@ -678,4 +698,19 @@ public class Session implements Serializable
 
         return localInetAddress;
     }
+
+    private ByteBuffer createCounterCFStatementForCQL3()
+    {
+        StringBuilder counter3 = new StringBuilder("CREATE TABLE \"Counter3\" 
(KEY blob PRIMARY KEY, ");
+
+        for (int i = 0; i < getColumnsPerKey(); i++)
+        {
+            counter3.append("c").append(i).append(" counter");
+            if (i != getColumnsPerKey() - 1)
+                counter3.append(", ");
+        }
+        counter3.append(");");
+
+        return ByteBufferUtil.bytes(counter3.toString());
+    }
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c5df2083/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java
----------------------------------------------------------------------
diff --git 
a/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java 
b/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java
index 7197eaa..7ca4b0f 100644
--- 
a/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java
+++ 
b/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java
@@ -48,8 +48,12 @@ public class CqlCounterAdder extends Operation
 
         if (cqlQuery == null)
         {
-            StringBuilder query = new StringBuilder(
-                    "UPDATE Counter1 USING CONSISTENCY " + 
session.getConsistencyLevel().toString() + " SET ");
+            String counterCF = session.cqlVersion.startsWith("2") ? "Counter1" 
: "Counter3";
+
+            StringBuilder query = new StringBuilder("UPDATE 
").append(wrapInQuotesIfRequired(counterCF))
+                                                              .append(" USING 
CONSISTENCY ")
+                                                              
.append(session.getConsistencyLevel())
+                                                              .append(" SET ");
 
             for (int i = 0; i < session.getColumnsPerKey(); i++)
             {
@@ -57,7 +61,6 @@ public class CqlCounterAdder extends Operation
                     query.append(",");
 
                 
query.append('C').append(i).append("=C").append(i).append("+1");
-
             }
             query.append(" WHERE KEY=?");
             cqlQuery = query.toString();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/c5df2083/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java
----------------------------------------------------------------------
diff --git 
a/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java 
b/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java
index 1133747..75a59ba 100644
--- 
a/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java
+++ 
b/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java
@@ -50,9 +50,20 @@ public class CqlCounterGetter extends Operation
 
         if (cqlQuery == null)
         {
-            StringBuilder query = new StringBuilder("SELECT FIRST 
").append(session.getColumnsPerKey())
-                    .append(" ''..'' FROM Counter1 USING CONSISTENCY 
").append(session.getConsistencyLevel().toString())
-                    .append(" WHERE KEY=?");
+            StringBuilder query = new StringBuilder("SELECT ");
+
+            if (session.cqlVersion.startsWith("2"))
+                query.append("FIRST 
").append(session.getColumnsPerKey()).append(" ''..''");
+            else
+                query.append("*");
+
+            String counterCF = session.cqlVersion.startsWith("2") ? "Counter1" 
: "Counter3";
+
+            query.append(" FROM ").append(wrapInQuotesIfRequired(counterCF))
+                                  .append(" USING CONSISTENCY ")
+                                  
.append(session.getConsistencyLevel().toString())
+                                  .append(" WHERE KEY=?");
+
             cqlQuery = query.toString();
         }
 

Reply via email to