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'))