You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2012/09/04 22:34:15 UTC
svn commit: r1380867 -
/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
Author: larsh
Date: Tue Sep 4 20:34:15 2012
New Revision: 1380867
URL: http://svn.apache.org/viewvc?rev=1380867&view=rev
Log:
HBASE-6711 Avoid local results copy in StoreScanner
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java?rev=1380867&r1=1380866&r2=1380867&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java Tue Sep 4 20:34:15 2012
@@ -346,13 +346,13 @@ public class StoreScanner extends NonLaz
KeyValue kv;
KeyValue prevKV = null;
- List<KeyValue> results = new ArrayList<KeyValue>();
// Only do a sanity-check if store and comparator are available.
KeyValue.KVComparator comparator =
store != null ? store.getComparator() : null;
long cumulativeMetric = 0;
+ int count = 0;
try {
LOOP: while((kv = this.heap.peek()) != null) {
// Check that the heap gives us KVs in an increasing order.
@@ -366,11 +366,11 @@ public class StoreScanner extends NonLaz
case INCLUDE_AND_SEEK_NEXT_COL:
Filter f = matcher.getFilter();
- results.add(f == null ? kv : f.transform(kv));
+ outResult.add(f == null ? kv : f.transform(kv));
+ count++;
if (qcode == ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_ROW) {
if (!matcher.moreRowsMayExistAfter(kv)) {
- outResult.addAll(results);
return false;
}
reseek(matcher.getKeyForNextRow(kv));
@@ -381,29 +381,23 @@ public class StoreScanner extends NonLaz
}
cumulativeMetric += kv.getLength();
- if (limit > 0 && (results.size() == limit)) {
+ if (limit > 0 && (count == limit)) {
break LOOP;
}
continue;
case DONE:
- // copy jazz
- outResult.addAll(results);
return true;
case DONE_SCAN:
close();
- // copy jazz
- outResult.addAll(results);
-
return false;
case SEEK_NEXT_ROW:
// This is just a relatively simple end of scan fix, to short-cut end
// us if there is an endKey in the scan.
if (!matcher.moreRowsMayExistAfter(kv)) {
- outResult.addAll(results);
return false;
}
@@ -438,9 +432,7 @@ public class StoreScanner extends NonLaz
}
}
- if (!results.isEmpty()) {
- // copy jazz
- outResult.addAll(results);
+ if (count > 0) {
return true;
}