diff --git a/src/java/org/apache/cassandra/db/Memtable.java b/src/java/org/apache/cassandra/db/Memtable.java index f66e812ecb..0c50de7bcb 100644 --- a/src/java/org/apache/cassandra/db/Memtable.java +++ b/src/java/org/apache/cassandra/db/Memtable.java @@ -399,9 +399,16 @@ public class Memtable implements Comparable } } - public Iterator sortedKeyIterator() + public Iterator sortedKeyIterator() throws ExecutionException, InterruptedException { - Set keys = columnFamilies_.keySet(); + Callable> callable = new Callable>() + { + public Set call() throws Exception + { + return columnFamilies_.keySet(); + } + }; + Set keys = executor_.submit(callable).get(); if (keys.size() == 0) { // cannot create a PQ of size zero (wtf?) diff --git a/src/java/org/apache/cassandra/db/Table.java b/src/java/org/apache/cassandra/db/Table.java index 1dd79a7416..b0c5f34e69 100644 --- a/src/java/org/apache/cassandra/db/Table.java +++ b/src/java/org/apache/cassandra/db/Table.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; +import java.util.concurrent.ExecutionException; import org.apache.commons.collections.IteratorUtils; import org.apache.commons.collections.Predicate; @@ -870,7 +871,7 @@ public class Table * @param maxResults * @return list of keys between startWith and stopAt */ - public List getKeyRange(final String startWith, final String stopAt, int maxResults) throws IOException + public List getKeyRange(final String startWith, final String stopAt, int maxResults) throws IOException, ExecutionException, InterruptedException { // (OPP key decoration is a no-op so using the "decorated" comparator against raw keys is fine) final Comparator comparator = StorageService.getPartitioner().getDecoratedKeyComparator(); diff --git a/src/java/org/apache/cassandra/service/RangeVerbHandler.java b/src/java/org/apache/cassandra/service/RangeVerbHandler.java index a5eb4e4585..c0ac3b3b42 100644 --- a/src/java/org/apache/cassandra/service/RangeVerbHandler.java +++ b/src/java/org/apache/cassandra/service/RangeVerbHandler.java @@ -22,7 +22,7 @@ public class RangeVerbHandler implements IVerbHandler Table table = Table.open(command.table); keys = table.getKeyRange(command.startWith, command.stopAt, command.maxResults); } - catch (IOException e) + catch (Exception e) { throw new RuntimeException(e); }