HBASE-15496 Throw RowTooBigException only for user scan/get (Guanghao Zhang)


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

Branch: refs/heads/hbase-12439
Commit: b865fb9434f3fc700cced9d6cdc5235794f8b5ba
Parents: 11d11d3
Author: tedyu <[email protected]>
Authored: Fri Mar 25 18:18:35 2016 -0700
Committer: tedyu <[email protected]>
Committed: Fri Mar 25 18:18:35 2016 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java   | 4 ++++
 .../java/org/apache/hadoop/hbase/regionserver/StoreScanner.java  | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/b865fb94/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java
index 706fc5b..bfd399b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/ScanQueryMatcher.java
@@ -610,6 +610,10 @@ public class ScanQueryMatcher {
     }
   }
 
+  boolean isUserScan() {
+    return this.isUserScan;
+  }
+
   //Used only for testing purposes
   static MatchCode checkColumn(ColumnTracker columnTracker, byte[] bytes, int 
offset,
       int length, long ttl, byte type, boolean ignoreCount) throws IOException 
{

http://git-wip-us.apache.org/repos/asf/hbase/blob/b865fb94/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 8dd3d7d..ecae787 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
@@ -351,7 +351,7 @@ public class StoreScanner extends 
NonReversedNonLazyKeyValueScanner
       if (!isParallelSeek) {
         long totalScannersSoughtBytes = 0;
         for (KeyValueScanner scanner : scanners) {
-          if (totalScannersSoughtBytes >= maxRowSize) {
+          if (matcher.isUserScan() && totalScannersSoughtBytes >= maxRowSize) {
             throw new RowTooBigException("Max row size allowed: " + maxRowSize
               + ", but row is bigger than that");
           }
@@ -572,7 +572,7 @@ public class StoreScanner extends 
NonReversedNonLazyKeyValueScanner
           
scannerContext.incrementSizeProgress(CellUtil.estimatedHeapSizeOf(cell));
           scannerContext.incrementBatchProgress(1);
 
-          if (totalBytesRead > maxRowSize) {
+          if (matcher.isUserScan() && totalBytesRead > maxRowSize) {
             throw new RowTooBigException(
                 "Max row size allowed: " + maxRowSize + ", but the row is 
bigger than that.");
           }

Reply via email to