Author: jbellis
Date: Mon Nov 22 20:29:29 2010
New Revision: 1037871
URL: http://svn.apache.org/viewvc?rev=1037871&view=rev
Log:
merge from 0.6
Modified:
cassandra/branches/cassandra-0.7/ (props changed)
cassandra/branches/cassandra-0.7/CHANGES.txt
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
(props changed)
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
(props changed)
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
(props changed)
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
(props changed)
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
(props changed)
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Column.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/IColumn.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/SuperColumn.java
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py
Propchange: cassandra/branches/cassandra-0.7/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 22 20:29:29 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6:922689-1037043,1037055
+/cassandra/branches/cassandra-0.6:922689-1037847
/cassandra/branches/cassandra-0.7:1035666
/cassandra/trunk:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3:774578-796573
Modified: cassandra/branches/cassandra-0.7/CHANGES.txt
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/CHANGES.txt?rev=1037871&r1=1037870&r2=1037871&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/CHANGES.txt (original)
+++ cassandra/branches/cassandra-0.7/CHANGES.txt Mon Nov 22 20:29:29 2010
@@ -1,3 +1,8 @@
+dev
+ * fix live-column-count of slice ranges including tombstoned supercolumn
+ with live subcolumn (CASSANDRA-1591)
+
+
0.7.0-rc1
* fix compaction and flush races with schema updates (CASSANDRA-1715)
* add clustertool, config-converter, sstablekeys, and schematool
@@ -11,6 +16,9 @@
* Fix misuse of DataOutputBuffer.getData in AntiEntropyService
(CASSANDRA-1729)
* detect and warn when obsolete version of JNA is present (CASSANDRA-1770)
+
+
+0.6.8
* Update windows .bat files to work outside of main Cassandra
directory (CASSANDRA-1713)
* log threshold causing memtable flush (CASSANDRA-1675)
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 22 20:29:29 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1037043,1037055
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1037847
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 22 20:29:29 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1037043,1037055
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1037847
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 22 20:29:29 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1037043,1037055
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1037847
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 22 20:29:29 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1037043,1037055
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1037847
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
Propchange:
cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 22 20:29:29 2010
@@ -1,4 +1,4 @@
-/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1037043,1037055
+/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1037847
/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1035666
/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1026734,1028929
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Column.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Column.java?rev=1037871&r1=1037870&r2=1037871&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Column.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/Column.java
Mon Nov 22 20:29:29 2010
@@ -222,5 +222,10 @@ public class Column implements IColumn
sb.append(timestamp());
return sb.toString();
}
+
+ public boolean isLive()
+ {
+ return !isMarkedForDelete();
+ }
}
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/IColumn.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/IColumn.java?rev=1037871&r1=1037870&r2=1037871&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/IColumn.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/IColumn.java
Mon Nov 22 20:29:29 2010
@@ -45,4 +45,11 @@ public interface IColumn
public void updateDigest(MessageDigest digest);
public int getLocalDeletionTime(); // for tombstone GC, so int is
sufficient granularity
public String getString(AbstractType comparator);
+
+ /**
+ * For a simple column, live == !isMarkedForDelete.
+ * For a supercolumn, live means it has at least one subcolumn whose
timestamp is greater than the
+ * supercolumn deleted-at time.
+ */
+ boolean isLive();
}
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/SuperColumn.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/SuperColumn.java?rev=1037871&r1=1037870&r2=1037871&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/SuperColumn.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/SuperColumn.java
Mon Nov 22 20:29:29 2010
@@ -270,6 +270,11 @@ public class SuperColumn implements ICol
return sb.toString();
}
+ public boolean isLive()
+ {
+ return mostRecentLiveChangeAt() > markedForDeleteAt.get();
+ }
+
public int getLocalDeletionTime()
{
return localDeletionTime.get();
Modified:
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java?rev=1037871&r1=1037870&r2=1037871&view=diff
==============================================================================
---
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
(original)
+++
cassandra/branches/cassandra-0.7/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java
Mon Nov 22 20:29:29 2010
@@ -135,7 +135,7 @@ public class SliceQueryFilter implements
break;
// only count live columns towards the `count` criteria
- if (!column.isMarkedForDelete()
+ if (column.isLive()
&& (!container.isMarkedForDelete()
|| column.mostRecentLiveChangeAt() >
container.getMarkedForDeleteAt()))
{
Modified: cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py?rev=1037871&r1=1037870&r2=1037871&view=diff
==============================================================================
--- cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py
(original)
+++ cassandra/branches/cassandra-0.7/test/system/test_thrift_server.py Mon Nov
22 20:29:29 2010
@@ -1474,6 +1474,31 @@ class TestMutations(ThriftTester):
except NotFoundException:
assert True, 'column did not exist'
+ def test_get_range_slice_after_deletion(self):
+ _set_keyspace('Keyspace2')
+ key = 'key1'
+ # three supercoluns, each with "col1" subcolumn
+ for i in range(1,4):
+ client.insert(key, ColumnParent('Super3', 'sc%d' % i),
Column('col1', 'val1', 0), ConsistencyLevel.ONE)
+
+ cp = ColumnParent('Super3')
+ predicate = SlicePredicate(slice_range=SliceRange('sc1', 'sc3', False,
count=1))
+ k_range = KeyRange(start_key=key, end_key=key, count=1)
+
+ # validate count=1 restricts to 1 supercolumn
+ result = client.get_range_slices(cp, predicate, k_range,
ConsistencyLevel.ONE)
+ assert len(result[0].columns) == 1
+
+ # remove sc1; add back subcolumn to override tombstone
+ client.remove(key, ColumnPath('Super3', 'sc1'), 1,
ConsistencyLevel.ONE)
+ result = client.get_range_slices(cp, predicate, k_range,
ConsistencyLevel.ONE)
+ assert len(result[0].columns) == 1
+ client.insert(key, ColumnParent('Super3', 'sc1'), Column('col1',
'val1', 2), ConsistencyLevel.ONE)
+ result = client.get_range_slices(cp, predicate, k_range,
ConsistencyLevel.ONE)
+ assert len(result[0].columns) == 1, result[0].columns
+ assert result[0].columns[0].super_column.name == 'sc1'
+
+
class TestTruncate(ThriftTester):
def test_truncate(self):
_set_keyspace('Keyspace1')