You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2011/04/07 22:05:17 UTC

svn commit: r1089969 - in /cassandra/trunk: CHANGES.txt src/java/org/apache/cassandra/db/RowMutation.java src/java/org/apache/cassandra/thrift/ThriftValidation.java test/system/test_thrift_server.py

Author: slebresne
Date: Thu Apr  7 20:05:17 2011
New Revision: 1089969

URL: http://svn.apache.org/viewvc?rev=1089969&view=rev
Log:
Fix python system tests for CASSANDRA-2384

Modified:
    cassandra/trunk/CHANGES.txt
    cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java
    cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
    cassandra/trunk/test/system/test_thrift_server.py

Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1089969&r1=1089968&r2=1089969&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Thu Apr  7 20:05:17 2011
@@ -2,7 +2,7 @@
  * remove Avro RPC support (CASSANDRA-926)
  * avoid double RowMutation serialization on write path (CASSANDRA-1800)
  * adds support for columns that act as incr/decr counters 
-   (CASSANDRA-1072, 1937, 1944, 1936, 2101, 2093, 2288, 2105)
+   (CASSANDRA-1072, 1937, 1944, 1936, 2101, 2093, 2288, 2105, 2384)
  * make NetworkTopologyStrategy the default (CASSANDRA-1960)
  * configurable internode encryption (CASSANDRA-1567)
  * human readable column names in sstable2json output (CASSANDRA-1933)

Modified: cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java?rev=1089969&r1=1089968&r2=1089969&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/db/RowMutation.java Thu Apr  7 20:05:17 2011
@@ -33,8 +33,9 @@ import org.apache.cassandra.io.ICompactS
 import org.apache.cassandra.net.Message;
 import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.thrift.ColumnOrSuperColumn;
-import org.apache.cassandra.thrift.Mutation;
 import org.apache.cassandra.thrift.Counter;
+import org.apache.cassandra.thrift.Deletion;
+import org.apache.cassandra.thrift.Mutation;
 import org.apache.cassandra.thrift.SlicePredicate;
 import org.apache.cassandra.utils.ByteBufferUtil;
 import org.apache.cassandra.utils.FBUtilities;
@@ -236,7 +237,7 @@ public class RowMutation implements IMut
             {
                 if (mutation.deletion != null)
                 {
-                    deleteColumnOrSuperColumnToRowMutation(rm, cfName, mutation.deletion.predicate, mutation.deletion.super_column, mutation.deletion.timestamp);
+                    deleteColumnOrSuperColumnToRowMutation(rm, cfName, mutation.deletion);
                 }
                 if (mutation.column_or_supercolumn != null)
                 {
@@ -322,18 +323,21 @@ public class RowMutation implements IMut
         }
     }
 
-    private static void deleteColumnOrSuperColumnToRowMutation(RowMutation rm, String cfName, SlicePredicate predicate, ByteBuffer scName, long timestamp)
+    private static void deleteColumnOrSuperColumnToRowMutation(RowMutation rm, String cfName, Deletion del)
     {
-        if (predicate != null && predicate.column_names != null)
+        if (del.predicate != null && del.predicate.column_names != null)
         {
-            for (ByteBuffer c : predicate.column_names)
+            for(ByteBuffer c : del.predicate.column_names)
             {
-                rm.delete(new QueryPath(cfName, scName, c), timestamp);
+                if (del.super_column == null && DatabaseDescriptor.getColumnFamilyType(rm.table_, cfName) == ColumnFamilyType.Super)
+                    rm.delete(new QueryPath(cfName, c), del.timestamp);
+                else
+                    rm.delete(new QueryPath(cfName, del.super_column, c), del.timestamp);
             }
         }
         else
         {
-            rm.delete(new QueryPath(cfName, scName), timestamp);
+            rm.delete(new QueryPath(cfName, del.super_column), del.timestamp);
         }
     }
 

Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java?rev=1089969&r1=1089968&r2=1089969&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/thrift/ThriftValidation.java Thu Apr  7 20:05:17 2011
@@ -303,10 +303,14 @@ public class ThriftValidation
         Counter counter = mut.counter;
 
         boolean isCommutative = metadata.getDefaultValidator().isCommutative();
+        int nulls = 0;
+        if (cosc == null) nulls++;
+        if (del == null) nulls++;
+        if (counter == null) nulls++;
 
-        if (cosc == null && del == null && counter == null)
+        if (nulls != 2)
         {
-            throw new InvalidRequestException("Mutation must have at least one of column_or_superColumn, deletion, counter or counter_deletion");
+            throw new InvalidRequestException("mutation must have one and only one of column_or_supercolumn, deletion, counter or counter_deletion");
         }
 
         if (cosc != null)

Modified: cassandra/trunk/test/system/test_thrift_server.py
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/system/test_thrift_server.py?rev=1089969&r1=1089968&r2=1089969&view=diff
==============================================================================
--- cassandra/trunk/test/system/test_thrift_server.py (original)
+++ cassandra/trunk/test/system/test_thrift_server.py Thu Apr  7 20:05:17 2011
@@ -1647,12 +1647,12 @@ class TestMutations(ThriftTester):
         d1 = 12
         d2 = -21
         update_map = {'key1': {'Counter1': [
-            CounterMutation(counter=Counter(column=CounterColumn('c1', d1))),
-            CounterMutation(counter=Counter(column=CounterColumn('c1', d2))),
+            Mutation(counter=Counter(column=CounterColumn('c1', d1))),
+            Mutation(counter=Counter(column=CounterColumn('c1', d2))),
             ]}}
         
         # insert positive and negative values and check the counts
-        client.batch_add(update_map, ConsistencyLevel.ONE)
+        client.batch_mutate(update_map, ConsistencyLevel.ONE)
         time.sleep(0.1)
         rv1 = client.get_counter('key1', ColumnPath(column_family='Counter1', column='c1'), ConsistencyLevel.ONE)
         assert rv1.column.value == d1+d2
@@ -1665,36 +1665,36 @@ class TestMutations(ThriftTester):
 
         # insert positive and negative values and check the counts
         update_map = {'key1': {'Counter1': [
-            CounterMutation(counter=Counter(column=CounterColumn('c1', d1))),
-            CounterMutation(counter=Counter(column=CounterColumn('c1', d2))),
+            Mutation(counter=Counter(column=CounterColumn('c1', d1))),
+            Mutation(counter=Counter(column=CounterColumn('c1', d2))),
             ]}}
-        client.batch_add(update_map, ConsistencyLevel.ONE)
+        client.batch_mutate(update_map, ConsistencyLevel.ONE)
         time.sleep(5)
         rv1 = client.get_counter('key1', ColumnPath(column_family='Counter1', column='c1'), ConsistencyLevel.ONE)
         assert rv1.column.value == d1+d2
 
         # remove the previous column and check that it is gone
         update_map = {'key1': {'Counter1': [
-            CounterMutation(deletion=CounterDeletion(predicate=SlicePredicate(column_names=['c1']))),
+            Mutation(deletion=Deletion(predicate=SlicePredicate(column_names=['c1']))),
             ]}}
-        client.batch_add(update_map, ConsistencyLevel.ONE)
+        client.batch_mutate(update_map, ConsistencyLevel.ONE)
         time.sleep(5)
         _assert_no_columnpath_counter('key1', ColumnPath(column_family='Counter1', column='c1'))
 
         # insert again and this time delete the whole row, check that it is gone
         update_map = {'key1': {'Counter1': [
-            CounterMutation(counter=Counter(column=CounterColumn('c1', d1))),
-            CounterMutation(counter=Counter(column=CounterColumn('c1', d2))),
+            Mutation(counter=Counter(column=CounterColumn('c1', d1))),
+            Mutation(counter=Counter(column=CounterColumn('c1', d2))),
             ]}}
-        client.batch_add(update_map, ConsistencyLevel.ONE)
+        client.batch_mutate(update_map, ConsistencyLevel.ONE)
         time.sleep(5)
         rv2 = client.get_counter('key1', ColumnPath(column_family='Counter1', column='c1'), ConsistencyLevel.ONE)
         assert rv2.column.value == d1+d2
 
         update_map = {'key1': {'Counter1': [
-            CounterMutation(deletion=CounterDeletion()),
+            Mutation(deletion=Deletion()),
             ]}}
-        client.batch_add(update_map, ConsistencyLevel.ONE)
+        client.batch_mutate(update_map, ConsistencyLevel.ONE)
         time.sleep(5)
         _assert_no_columnpath_counter('key1', ColumnPath(column_family='Counter1', column='c1'))