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:02 UTC
[2/6] git commit: accept simple iterator where closeable-ness is not
needed
accept simple iterator where closeable-ness is not needed
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/177bf5f4
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/177bf5f4
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/177bf5f4
Branch: refs/heads/trunk
Commit: 177bf5f4fcfab34f868268ae802c1f7fe08f8b64
Parents: 5612b93
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed May 15 17:13:56 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed May 15 17:13:56 2013 -0500
----------------------------------------------------------------------
.../apache/cassandra/db/CollationController.java | 21 +----------
.../apache/cassandra/db/filter/QueryFilter.java | 17 +++------
.../cassandra/io/sstable/ReducingKeyIterator.java | 14 +++----
.../org/apache/cassandra/utils/IMergeIterator.java | 4 ++-
.../org/apache/cassandra/utils/MergeIterator.java | 29 ++++++++-------
5 files changed, 31 insertions(+), 54 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/177bf5f4/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 2a45df5..1bb09ce 100644
--- a/src/java/org/apache/cassandra/db/CollationController.java
+++ b/src/java/org/apache/cassandra/db/CollationController.java
@@ -156,28 +156,9 @@ public class CollationController
return null;
// do a final collate. toCollate is boilerplate required to provide a CloseableIterator
- CloseableIterator<OnDiskAtom> toCollate = new SimpleAbstractColumnIterator()
- {
- final Iterator<Column> iter = container.iterator();
-
- protected OnDiskAtom computeNext()
- {
- return iter.hasNext() ? iter.next() : endOfData();
- }
-
- public ColumnFamily getColumnFamily()
- {
- return container;
- }
-
- public DecoratedKey getKey()
- {
- return filter.key;
- }
- };
ColumnFamily returnCF = container.cloneMeShallow();
Tracing.trace("Collating all results");
- filter.collateOnDiskAtom(returnCF, Collections.singletonList(toCollate), gcBefore);
+ filter.collateOnDiskAtom(returnCF, Collections.singletonList(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/177bf5f4/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 c6414fa..740240c 100644
--- a/src/java/org/apache/cassandra/db/filter/QueryFilter.java
+++ b/src/java/org/apache/cassandra/db/filter/QueryFilter.java
@@ -67,15 +67,15 @@ public class QueryFilter
return filter.getSSTableColumnIterator(sstable, file, key, indexEntry);
}
- public void collateOnDiskAtom(final ColumnFamily returnCF, List<? extends CloseableIterator<OnDiskAtom>> toCollate, final int gcBefore)
+ public void collateOnDiskAtom(final ColumnFamily returnCF, List<? extends Iterator<? extends OnDiskAtom>> toCollate, final int gcBefore)
{
- List<CloseableIterator<Column>> filteredIterators = new ArrayList<CloseableIterator<Column>>(toCollate.size());
- for (CloseableIterator<OnDiskAtom> iter : toCollate)
+ List<Iterator<Column>> filteredIterators = new ArrayList<Iterator<Column>>(toCollate.size());
+ for (Iterator<? extends OnDiskAtom> iter : toCollate)
filteredIterators.add(gatherTombstones(returnCF, iter));
collateColumns(returnCF, filteredIterators, gcBefore);
}
- public void collateColumns(final ColumnFamily returnCF, List<? extends CloseableIterator<Column>> toCollate, final int gcBefore)
+ public void collateColumns(final ColumnFamily returnCF, List<? extends Iterator<Column>> toCollate, final int gcBefore)
{
Comparator<Column> fcomp = filter.getColumnComparator(returnCF.getComparator());
// define a 'reduced' iterator that merges columns w/ the same name, which
@@ -105,9 +105,9 @@ public class QueryFilter
* Given an iterator of on disk atom, returns an iterator that filters the tombstone range
* markers adding them to {@code returnCF} and returns the normal column.
*/
- public static CloseableIterator<Column> gatherTombstones(final ColumnFamily returnCF, final CloseableIterator<OnDiskAtom> iter)
+ public static Iterator<Column> gatherTombstones(final ColumnFamily returnCF, final Iterator<? extends OnDiskAtom> iter)
{
- return new CloseableIterator<Column>()
+ return new Iterator<Column>()
{
private Column next;
@@ -153,11 +153,6 @@ public class QueryFilter
{
throw new UnsupportedOperationException();
}
-
- public void close() throws IOException
- {
- iter.close();
- }
};
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/177bf5f4/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java b/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java
index c977cad..6cb8653 100644
--- a/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java
+++ b/src/java/org/apache/cassandra/io/sstable/ReducingKeyIterator.java
@@ -20,6 +20,7 @@ package org.apache.cassandra.io.sstable;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Iterator;
import org.apache.cassandra.db.DecoratedKey;
import org.apache.cassandra.utils.CloseableIterator;
@@ -62,18 +63,15 @@ public class ReducingKeyIterator implements CloseableIterator<DecoratedKey>
public void close() throws IOException
{
- for (Object o : mi.iterators())
- {
- ((CloseableIterator)o).close();
- }
+ mi.close();
}
public long getTotalBytes()
{
long m = 0;
- for (Object o : mi.iterators())
+ for (Iterator<DecoratedKey> iter : mi.iterators())
{
- m += ((KeyIterator) o).getTotalBytes();
+ m += ((KeyIterator) iter).getTotalBytes();
}
return m;
}
@@ -81,9 +79,9 @@ public class ReducingKeyIterator implements CloseableIterator<DecoratedKey>
public long getBytesRead()
{
long m = 0;
- for (Object o : mi.iterators())
+ for (Iterator<DecoratedKey> iter : mi.iterators())
{
- m += ((KeyIterator) o).getBytesRead();
+ m += ((KeyIterator) iter).getBytesRead();
}
return m;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/177bf5f4/src/java/org/apache/cassandra/utils/IMergeIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/IMergeIterator.java b/src/java/org/apache/cassandra/utils/IMergeIterator.java
index c4cd915..deddc4c 100644
--- a/src/java/org/apache/cassandra/utils/IMergeIterator.java
+++ b/src/java/org/apache/cassandra/utils/IMergeIterator.java
@@ -17,7 +17,9 @@
*/
package org.apache.cassandra.utils;
+import java.util.Iterator;
+
public interface IMergeIterator<In, Out> extends CloseableIterator<Out>
{
- Iterable<? extends CloseableIterator<In>> iterators();
+ Iterable<? extends Iterator<In>> iterators();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/177bf5f4/src/java/org/apache/cassandra/utils/MergeIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/MergeIterator.java b/src/java/org/apache/cassandra/utils/MergeIterator.java
index f05c14b..4c89edb 100644
--- a/src/java/org/apache/cassandra/utils/MergeIterator.java
+++ b/src/java/org/apache/cassandra/utils/MergeIterator.java
@@ -17,6 +17,7 @@
*/
package org.apache.cassandra.utils;
+import java.io.Closeable;
import java.io.IOException;
import java.util.*;
@@ -26,15 +27,15 @@ import com.google.common.collect.AbstractIterator;
public abstract class MergeIterator<In,Out> extends AbstractIterator<Out> implements IMergeIterator<In, Out>
{
protected final Reducer<In,Out> reducer;
- protected final List<? extends CloseableIterator<In>> iterators;
+ protected final List<? extends Iterator<In>> iterators;
- protected MergeIterator(List<? extends CloseableIterator<In>> iters, Reducer<In, Out> reducer)
+ protected MergeIterator(List<? extends Iterator<In>> iters, Reducer<In, Out> reducer)
{
this.iterators = iters;
this.reducer = reducer;
}
- public static <In, Out> IMergeIterator<In, Out> get(final List<? extends CloseableIterator<In>> sources,
+ public static <In, Out> IMergeIterator<In, Out> get(final List<? extends Iterator<In>> sources,
Comparator<In> comparator,
final Reducer<In, Out> reducer)
{
@@ -45,18 +46,18 @@ public abstract class MergeIterator<In,Out> extends AbstractIterator<Out> implem
return new ManyToOne<In, Out>(sources, comparator, reducer);
}
- public Iterable<? extends CloseableIterator<In>> iterators()
+ public Iterable<? extends Iterator<In>> iterators()
{
return iterators;
}
public void close()
{
- for (CloseableIterator<In> iterator : this.iterators)
+ for (Iterator<In> iterator : this.iterators)
{
try
{
- iterator.close();
+ ((Closeable)iterator).close();
}
catch (IOException e)
{
@@ -76,11 +77,11 @@ public abstract class MergeIterator<In,Out> extends AbstractIterator<Out> implem
// TODO: if we had our own PriorityQueue implementation we could stash items
// at the end of its array, so we wouldn't need this storage
protected final ArrayDeque<Candidate<In>> candidates;
- public ManyToOne(List<? extends CloseableIterator<In>> iters, Comparator<In> comp, Reducer<In,Out> reducer)
+ public ManyToOne(List<? extends Iterator<In>> iters, Comparator<In> comp, Reducer<In, Out> reducer)
{
super(iters, reducer);
this.queue = new PriorityQueue<Candidate<In>>(Math.max(1, iters.size()));
- for (CloseableIterator<In> iter : iters)
+ for (Iterator<In> iter : iters)
{
Candidate<In> candidate = new Candidate<In>(iter, comp);
if (!candidate.advance())
@@ -127,11 +128,11 @@ public abstract class MergeIterator<In,Out> extends AbstractIterator<Out> implem
// Holds and is comparable by the head item of an iterator it owns
protected static final class Candidate<In> implements Comparable<Candidate<In>>
{
- private final CloseableIterator<In> iter;
+ private final Iterator<In> iter;
private final Comparator<In> comp;
private In item;
- public Candidate(CloseableIterator<In> iter, Comparator<In> comp)
+ public Candidate(Iterator<In> iter, Comparator<In> comp)
{
this.iter = iter;
this.comp = comp;
@@ -186,9 +187,9 @@ public abstract class MergeIterator<In,Out> extends AbstractIterator<Out> implem
private static class OneToOne<In, Out> extends MergeIterator<In, Out>
{
- private final CloseableIterator<In> source;
+ private final Iterator<In> source;
- public OneToOne(List<? extends CloseableIterator<In>> sources, Reducer<In, Out> reducer)
+ public OneToOne(List<? extends Iterator<In>> sources, Reducer<In, Out> reducer)
{
super(sources, reducer);
source = sources.get(0);
@@ -206,9 +207,9 @@ public abstract class MergeIterator<In,Out> extends AbstractIterator<Out> implem
private static class TrivialOneToOne<In, Out> extends MergeIterator<In, Out>
{
- private final CloseableIterator<?> source;
+ private final Iterator<In> source;
- public TrivialOneToOne(List<? extends CloseableIterator<In>> sources, Reducer<In, Out> reducer)
+ public TrivialOneToOne(List<? extends Iterator<In>> sources, Reducer<In, Out> reducer)
{
super(sources, reducer);
source = sources.get(0);