Repository: hbase Updated Branches: refs/heads/branch-1.0 2752e3cf6 -> 65c3c3716
HBASE-13362 Set max result size from client only (like scanner caching). Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/65c3c371 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/65c3c371 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/65c3c371 Branch: refs/heads/branch-1.0 Commit: 65c3c371698eff419ad78cab3c2f9e21a782395b Parents: 2752e3c Author: Lars Hofhansl <[email protected]> Authored: Wed Apr 8 21:55:34 2015 -0700 Committer: Lars Hofhansl <[email protected]> Committed: Wed Apr 8 21:55:34 2015 -0700 ---------------------------------------------------------------------- .../org/apache/hadoop/hbase/HConstants.java | 21 ++++++++++++++++++-- .../hbase/regionserver/RSRpcServices.java | 6 +++--- 2 files changed, 22 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/65c3c371/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java ---------------------------------------------------------------------- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java index a4e6784..5d116c6 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/HConstants.java @@ -603,13 +603,30 @@ public final class HConstants { "hbase.client.scanner.max.result.size"; /** + * Parameter name for maximum number of bytes returned when calling a scanner's next method. + * Controlled by the server. + */ + public static final String HBASE_SERVER_SCANNER_MAX_RESULT_SIZE_KEY = + "hbase.server.scanner.max.result.size"; + + /** + * Maximum number of bytes returned when calling a scanner's next method. + * Note that when a single row is larger than this limit the row is still + * returned completely. + * + * The default value is 2MB. + */ + public static final long DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE = 2 * 1024 * 1024; + + /** * Maximum number of bytes returned when calling a scanner's next method. * Note that when a single row is larger than this limit the row is still * returned completely. + * Safety setting to protect the region server. * - * The default value is unlimited. + * The default value unlimited for backwards compatibility */ - public static final long DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE = Long.MAX_VALUE; + public static final long DEFAULT_HBASE_SERVER_SCANNER_MAX_RESULT_SIZE = Long.MAX_VALUE; /** * Parameter name for client pause value, used mostly as value to wait http://git-wip-us.apache.org/repos/asf/hbase/blob/65c3c371/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index 3165854..6da9ba1 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -786,8 +786,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler, HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, HConstants.DEFAULT_HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD); maxScannerResultSize = rs.conf.getLong( - HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY, - HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE); + HConstants.HBASE_SERVER_SCANNER_MAX_RESULT_SIZE_KEY, + HConstants.DEFAULT_HBASE_SERVER_SCANNER_MAX_RESULT_SIZE); // Set our address, however we need the final port that was given to rpcServer isa = new InetSocketAddress(initialIsa.getHostName(), rpcServer.getListenerAddress().getPort()); @@ -2094,7 +2094,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler, boolean moreRows = false; while (i < rows) { // Stop collecting results if maxScannerResultSize is set and we have exceeded it - if ((maxScannerResultSize < Long.MAX_VALUE) && + if ((maxResultSize < Long.MAX_VALUE) && (currentScanResultSize >= maxResultSize)) { builder.setMoreResultsInRegion(true); break;
