diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java index 957b5ca5b9..c93c4d6459 100644 --- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java +++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java @@ -1580,11 +1580,11 @@ public final class ColumnFamilyStore implements ColumnFamilyStoreMBean throws IOException, ExecutionException, InterruptedException { lock_.readLock().lock(); + List iterators = new ArrayList(); try { final ColumnFamily returnCF; ColumnIterator iter; - List iterators = new ArrayList(); /* add the current memtable */ memtableLock_.readLock().lock(); @@ -1637,9 +1637,7 @@ public final class ColumnFamilyStore implements ColumnFamilyStoreMBean Iterator collated = IteratorUtils.collatedIterator(comparator, iterators); if (!collated.hasNext()) return new ColumnFamily(cfName, DatabaseDescriptor.getColumnFamilyType(cfName)); - List L = new ArrayList(); - CollectionUtils.addAll(L, collated); - ReducingIterator reduced = new ReducingIterator(L.iterator()) + ReducingIterator reduced = new ReducingIterator(collated) { ColumnFamily curCF = returnCF.cloneMeShallow(); @@ -1675,14 +1673,23 @@ public final class ColumnFamilyStore implements ColumnFamilyStoreMBean returnCF.addColumn(column); } - /* close remaining cursors */ - for (ColumnIterator ci : iterators) - ci.close(); - return removeDeleted(returnCF); } finally { + /* close all cursors */ + for (ColumnIterator ci : iterators) + { + try + { + ci.close(); + } + catch (Throwable th) + { + logger_.error(th); + } + } + lock_.readLock().unlock(); } }