diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index c3db0ac92a..71ba3099aa 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -33,7 +33,6 @@ import org.apache.log4j.Logger; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.dht.Range; -import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.io.*; import org.apache.cassandra.net.EndPoint; import org.apache.cassandra.service.StorageService; @@ -1437,7 +1436,7 @@ public final class ColumnFamilyStore implements ColumnFamilyStoreMBean if (!collated.hasNext()) return null; - filter.collectColumns(returnCF, collated, gcBefore); + filter.collectCollatedColumns(returnCF, collated, gcBefore); return removeDeleted(returnCF, gcBefore); // collect does a first pass but doesn't try to recognize e.g. the entire CF being tombstoned } diff --git a/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java b/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java index fd580530ae..00237ba2be 100644 --- a/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java +++ b/src/java/org/apache/cassandra/db/filter/NamesQueryFilter.java @@ -1,10 +1,7 @@ package org.apache.cassandra.db.filter; import java.io.IOException; -import java.util.SortedSet; -import java.util.Arrays; -import java.util.TreeSet; -import java.util.Comparator; +import java.util.*; import org.apache.cassandra.io.SSTableReader; import org.apache.cassandra.utils.ReducingIterator; @@ -64,10 +61,11 @@ public class NamesQueryFilter extends QueryFilter } } - public void collectColumns(ColumnFamily returnCF, ReducingIterator reducedColumns, int gcBefore) + public void collectReducedColumns(ColumnFamily returnCF, Iterator reducedColumns, int gcBefore) { - for (IColumn column : reducedColumns) + while (reducedColumns.hasNext()) { + IColumn column = reducedColumns.next(); if (!column.isMarkedForDelete() || column.getLocalDeletionTime() > gcBefore) returnCF.addColumn(column); } diff --git a/src/java/org/apache/cassandra/db/filter/QueryFilter.java b/src/java/org/apache/cassandra/db/filter/QueryFilter.java index 929ba251a9..984ca8047e 100644 --- a/src/java/org/apache/cassandra/db/filter/QueryFilter.java +++ b/src/java/org/apache/cassandra/db/filter/QueryFilter.java @@ -38,7 +38,7 @@ public abstract class QueryFilter * by the filter code, which should have some limit on the number of columns * to avoid running out of memory on large rows. */ - public abstract void collectColumns(ColumnFamily returnCF, ReducingIterator reducedColumns, int gcBefore); + public abstract void collectReducedColumns(ColumnFamily returnCF, Iterator reducedColumns, int gcBefore); /** * subcolumns of a supercolumn are unindexed, so to pick out parts of those we operate in-memory. @@ -57,7 +57,7 @@ public abstract class QueryFilter }; } - public void collectColumns(final ColumnFamily returnCF, Iterator collatedColumns, int gcBefore) + public void collectCollatedColumns(final ColumnFamily returnCF, Iterator collatedColumns, int gcBefore) { // define a 'reduced' iterator that merges columns w/ the same name, which // greatly simplifies computing liveColumns in the presence of tombstones. @@ -83,7 +83,7 @@ public abstract class QueryFilter } }; - collectColumns(returnCF, reduced, gcBefore); + collectReducedColumns(returnCF, reduced, gcBefore); } public String getColumnFamilyName() diff --git a/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java b/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java index d0920eb385..cd01ed32f4 100644 --- a/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java +++ b/src/java/org/apache/cassandra/db/filter/SliceQueryFilter.java @@ -3,6 +3,7 @@ package org.apache.cassandra.db.filter; import java.io.IOException; import java.util.Comparator; import java.util.Arrays; +import java.util.Iterator; import org.apache.commons.collections.comparators.ReverseComparator; @@ -66,13 +67,14 @@ public class SliceQueryFilter extends QueryFilter return isAscending ? super.getColumnComparator(comparator) : new ReverseComparator(super.getColumnComparator(comparator)); } - public void collectColumns(ColumnFamily returnCF, ReducingIterator reducedColumns, int gcBefore) + public void collectReducedColumns(ColumnFamily returnCF, Iterator reducedColumns, int gcBefore) { int liveColumns = 0; AbstractType comparator = returnCF.getComparator(); - for (IColumn column : reducedColumns) + while (reducedColumns.hasNext()) { + IColumn column = reducedColumns.next(); if (liveColumns >= count) break; if (finish.length > 0