You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sa...@apache.org on 2016/08/05 21:03:22 UTC

[23/50] [abbrv] phoenix git commit: PHOENIX-3098 Possible NegativeArraySizeException while scanning local indexes during regions merge(Rajeshbabu)

PHOENIX-3098 Possible NegativeArraySizeException while scanning local indexes during regions merge(Rajeshbabu)


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

Branch: refs/heads/encodecolumns
Commit: b157be2e679647c5cadfefdd23c89e1d8da5e379
Parents: fb65258
Author: Rajeshbabu Chintaguntla <ra...@apache.org>
Authored: Mon Jul 25 18:11:15 2016 +0530
Committer: Rajeshbabu Chintaguntla <ra...@apache.org>
Committed: Mon Jul 25 18:11:15 2016 +0530

----------------------------------------------------------------------
 .../regionserver/LocalIndexStoreFileScanner.java   | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/b157be2e/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexStoreFileScanner.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexStoreFileScanner.java b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexStoreFileScanner.java
index cbffa53..2696bd8 100644
--- a/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexStoreFileScanner.java
+++ b/phoenix-core/src/main/java/org/apache/hadoop/hbase/regionserver/LocalIndexStoreFileScanner.java
@@ -84,6 +84,23 @@ public class LocalIndexStoreFileScanner extends StoreFileScanner{
         return changedKv;
     }
 
+    /**
+     * Enforce seek all the time for local index store file scanner otherwise some times hbase
+     * might return fake kvs not in physical files.
+     */
+    @Override
+    public boolean requestSeek(KeyValue kv, boolean forward, boolean useBloom) throws IOException {
+        boolean requestSeek = super.requestSeek(kv, forward, useBloom);
+        if(requestSeek) {
+            Cell peek = super.peek();
+            if (Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(),
+                peek.getRowArray(), peek.getRowOffset(), peek.getRowLength()) == 0) {
+                return forward ? reseek(kv): seek(kv);
+            }
+        }
+        return requestSeek;
+    }
+
     @Override
     public boolean seek(KeyValue key) throws IOException {
         return seekOrReseek(key, true);