From edacc67c266fc2bef360356d360f394ea9b46154 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Wed, 27 May 2009 21:41:04 +0000 Subject: [PATCH] remove unnecessary List creation in getSliceFrom and move close() cleanup for to the finally block. patch by Jun Rao; reviewed by jbellis for CASSANDRA-201 git-svn-id: https://svn.apache.org/repos/asf/incubator/cassandra/trunk@779322 13f79535-47bb-0310-9956-ffa450edef68 --- .../cassandra/db/ColumnFamilyStore.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) 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(); } }