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 2015/08/29 00:26:29 UTC

hbase git commit: HBASE-14315 Save one call to KeyValueHeap.peek per row.

Repository: hbase
Updated Branches:
  refs/heads/0.98 7a0d36fec -> 7a4fa7f20


HBASE-14315 Save one call to KeyValueHeap.peek per row.


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/7a4fa7f2
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/7a4fa7f2
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/7a4fa7f2

Branch: refs/heads/0.98
Commit: 7a4fa7f20cf8084ce57dcaa83e0c4f430d290736
Parents: 7a0d36f
Author: Lars Hofhansl <la...@apache.org>
Authored: Fri Aug 28 15:26:19 2015 -0700
Committer: Lars Hofhansl <la...@apache.org>
Committed: Fri Aug 28 15:26:19 2015 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/regionserver/StoreScanner.java     | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/7a4fa7f2/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
index 527b084..8da3752 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
@@ -449,31 +449,29 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner
       return false;
     }
 
-    KeyValue peeked = this.heap.peek();
-    if (peeked == null) {
+    KeyValue kv = this.heap.peek();
+    if (kv == null) {
       close();
       return false;
     }
 
     // only call setRow if the row changes; avoids confusing the query matcher
     // if scanning intra-row
-    byte[] row = peeked.getBuffer();
-    int offset = peeked.getRowOffset();
-    short length = peeked.getRowLength();
+    byte[] row = kv.getBuffer();
+    int offset = kv.getRowOffset();
+    short length = kv.getRowLength();
     if (limit < 0 || matcher.row == null || !Bytes.equals(row, offset, length, matcher.row,
         matcher.rowOffset, matcher.rowLength)) {
       this.countPerRow = 0;
       matcher.setRow(row, offset, length);
     }
 
-    KeyValue kv;
-
     // Only do a sanity-check if store and comparator are available.
     KeyValue.KVComparator comparator =
         store != null ? store.getComparator() : null;
 
     int count = 0;
-    LOOP: while((kv = this.heap.peek()) != null) {
+    LOOP: do {
       if (prevKV != kv) ++kvsScanned; // Do object compare - we set prevKV from the same heap.
       checkScanOrder(prevKV, kv, comparator);
       prevKV = kv;
@@ -563,7 +561,7 @@ public class StoreScanner extends NonReversedNonLazyKeyValueScanner
         default:
           throw new RuntimeException("UNEXPECTED");
       }
-    }
+    } while((kv = this.heap.peek()) != null);
 
     if (count > 0) {
       return true;