You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/05/16 01:04:06 UTC

[6/6] git commit: simplify de-tombstoning of columns for pre-collated results

simplify de-tombstoning of columns for pre-collated results


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

Branch: refs/heads/trunk
Commit: 42a39b5d642efc6c593b27e26642a9acb5b84a2f
Parents: b397187
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed May 15 18:03:13 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed May 15 18:03:49 2013 -0500

----------------------------------------------------------------------
 .../apache/cassandra/db/CollationController.java   |    2 +-
 .../org/apache/cassandra/db/ColumnFamilyStore.java |    2 +-
 .../apache/cassandra/db/filter/QueryFilter.java    |    9 +++++++++
 test/data/serialization/2.0/db.RowMutation.bin     |  Bin 3599 -> 3599 bytes
 .../apache/cassandra/tools/SSTableExportTest.java  |    2 +-
 .../apache/cassandra/tools/SSTableImportTest.java  |    2 +-
 6 files changed, 13 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/42a39b5d/src/java/org/apache/cassandra/db/CollationController.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/CollationController.java b/src/java/org/apache/cassandra/db/CollationController.java
index f1f560e..1aa2d77 100644
--- a/src/java/org/apache/cassandra/db/CollationController.java
+++ b/src/java/org/apache/cassandra/db/CollationController.java
@@ -156,7 +156,7 @@ public class CollationController
             // do a final collate.  toCollate is boilerplate required to provide a CloseableIterator
             ColumnFamily returnCF = container.cloneMeShallow();
             Tracing.trace("Collating all results");
-            filter.collateOnDiskAtom(returnCF, Collections.singletonList(container.iterator()), gcBefore);
+            filter.collateOnDiskAtom(returnCF, container.iterator(), gcBefore);
 
             // "hoist up" the requested data into a more recent sstable
             if (sstablesIterated > cfs.getMinimumCompactionThreshold()

http://git-wip-us.apache.org/repos/asf/cassandra/blob/42a39b5d/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index e0329a7..05784ce 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1322,7 +1322,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
     {
         ColumnFamily cf = cached.cloneMeShallow(ArrayBackedSortedColumns.factory, filter.filter.isReversed());
         OnDiskAtomIterator ci = filter.getMemtableColumnIterator(cached, null);
-        filter.collateOnDiskAtom(cf, Collections.singletonList(ci), gcBefore);
+        filter.collateOnDiskAtom(cf, ci, gcBefore);
         return removeDeletedCF(cf, gcBefore);
     }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/42a39b5d/src/java/org/apache/cassandra/db/filter/QueryFilter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/filter/QueryFilter.java b/src/java/org/apache/cassandra/db/filter/QueryFilter.java
index 03e9509..6e30c17 100644
--- a/src/java/org/apache/cassandra/db/filter/QueryFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/QueryFilter.java
@@ -75,6 +75,15 @@ public class QueryFilter
         collateColumns(returnCF, filteredIterators, gcBefore);
     }
 
+    /**
+     * When there is only a single source of atoms, we can skip the collate step
+     */
+    public void collateOnDiskAtom(ColumnFamily returnCF, Iterator<? extends OnDiskAtom> toCollate, int gcBefore)
+    {
+        Iterator<Column> columns = gatherTombstones(returnCF, toCollate);
+        filter.collectReducedColumns(returnCF, columns, gcBefore);
+    }
+
     public void collateColumns(final ColumnFamily returnCF, List<? extends Iterator<Column>> toCollate, final int gcBefore)
     {
         Comparator<Column> fcomp = filter.getColumnComparator(returnCF.getComparator());

http://git-wip-us.apache.org/repos/asf/cassandra/blob/42a39b5d/test/data/serialization/2.0/db.RowMutation.bin
----------------------------------------------------------------------
diff --git a/test/data/serialization/2.0/db.RowMutation.bin b/test/data/serialization/2.0/db.RowMutation.bin
index fcbf794..a659ecd 100644
Binary files a/test/data/serialization/2.0/db.RowMutation.bin and b/test/data/serialization/2.0/db.RowMutation.bin differ

http://git-wip-us.apache.org/repos/asf/cassandra/blob/42a39b5d/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/tools/SSTableExportTest.java b/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
index 0db0c07..6fd1764 100644
--- a/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
+++ b/test/unit/org/apache/cassandra/tools/SSTableExportTest.java
@@ -204,7 +204,7 @@ public class SSTableExportTest extends SchemaLoader
         reader = SSTableReader.open(Descriptor.fromFilename(tempSS2.getPath()));
         QueryFilter qf = QueryFilter.getNamesFilter(Util.dk("rowA"), "Standard1", ByteBufferUtil.bytes("name"));
         ColumnFamily cf = qf.getSSTableColumnIterator(reader).getColumnFamily();
-        qf.collateOnDiskAtom(cf, Collections.singletonList(qf.getSSTableColumnIterator(reader)), Integer.MIN_VALUE);
+        qf.collateOnDiskAtom(cf, qf.getSSTableColumnIterator(reader), Integer.MIN_VALUE);
         assertTrue(cf != null);
         assertTrue(cf.getColumn(ByteBufferUtil.bytes("name")).value().equals(hexToBytes("76616c")));
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/42a39b5d/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/tools/SSTableImportTest.java b/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
index 2954e54..a1a7673 100644
--- a/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
+++ b/test/unit/org/apache/cassandra/tools/SSTableImportTest.java
@@ -110,7 +110,7 @@ public class SSTableImportTest extends SchemaLoader
         SSTableReader reader = SSTableReader.open(Descriptor.fromFilename(tempSS.getPath()));
         QueryFilter qf = QueryFilter.getIdentityFilter(Util.dk("rowA"), "Super4");
         ColumnFamily cf = cloneForAdditions(qf.getSSTableColumnIterator(reader));
-        qf.collateOnDiskAtom(cf, Collections.singletonList(qf.getSSTableColumnIterator(reader)), Integer.MIN_VALUE);
+        qf.collateOnDiskAtom(cf, qf.getSSTableColumnIterator(reader), Integer.MIN_VALUE);
 
         DeletionTime delTime = cf.deletionInfo().rangeCovering(CompositeType.build(ByteBufferUtil.bytes("superA"))).iterator().next();
         assertEquals("supercolumn deletion time did not match the expected time", new DeletionInfo(0, 0), new DeletionInfo(delTime));