You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ga...@apache.org on 2017/02/09 01:49:14 UTC

hbase git commit: HBASE-15437 Response size calculated in RPCServer for warning tooLarge responses does NOT count CellScanner payload

Repository: hbase
Updated Branches:
  refs/heads/branch-1 fd062011f -> f61b840a3


HBASE-15437 Response size calculated in RPCServer for warning tooLarge responses does NOT count CellScanner payload


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

Branch: refs/heads/branch-1
Commit: f61b840a3162c6126129e486eff621e3cf4e1539
Parents: fd06201
Author: Jerry He <je...@apache.org>
Authored: Wed Dec 7 14:47:10 2016 -0800
Committer: Gary Helmling <ga...@apache.org>
Committed: Wed Feb 8 17:21:56 2017 -0800

----------------------------------------------------------------------
 .../main/java/org/apache/hadoop/hbase/ipc/RpcServer.java    | 9 ++++++++-
 .../org/apache/hadoop/hbase/regionserver/RSRpcServices.java | 8 +++++++-
 2 files changed, 15 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/f61b840a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
index eb4f2df..db73dfe 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcServer.java
@@ -2353,6 +2353,7 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
       int processingTime = (int) (endTime - startTime);
       int qTime = (int) (startTime - receiveTime);
       int totalTime = (int) (endTime - receiveTime);
+      Call call = CurCall.get();
       if (LOG.isTraceEnabled()) {
         LOG.trace(CurCall.get().toString() +
             ", response " + TextFormat.shortDebugString(result) +
@@ -2360,8 +2361,14 @@ public class RpcServer implements RpcServerInterface, ConfigurationObserver {
             " processingTime: " + processingTime +
             " totalTime: " + totalTime);
       }
-      long requestSize = param.getSerializedSize();
+      // Use the raw request call size for now.
+      long requestSize = call.getSize();
       long responseSize = result.getSerializedSize();
+      if (call.isClientCellBlockSupported()) {
+        // Include the payload size in HBaseRpcController
+        responseSize += call.getResponseCellSize();
+      }
+
       metrics.dequeuedCall(qTime);
       metrics.processedCall(processingTime);
       metrics.totalCall(totalTime);

http://git-wip-us.apache.org/repos/asf/hbase/blob/f61b840a/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 09649c5..f13d8b7 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
@@ -1093,7 +1093,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
    * @return an object that represents the last referenced block from this response.
    */
   Object addSize(RpcCallContext context, Result r, Object lastBlock) {
-    if (context != null && !r.isEmpty()) {
+    if (context != null && r != null && !r.isEmpty()) {
       for (Cell c : r.rawCells()) {
         context.incrementResponseCellSize(CellUtil.estimatedHeapSizeOf(c));
         // We're using the last block being the same as the current block as
@@ -2134,6 +2134,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
           pbr = ProtobufUtil.toResultNoData(r);
           ((PayloadCarryingRpcController) controller)
               .setCellScanner(CellUtil.createCellScanner(r.rawCells()));
+          addSize(call, r, null);
         } else {
           pbr = ProtobufUtil.toResult(r);
         }
@@ -2307,6 +2308,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
     PayloadCarryingRpcController controller = (PayloadCarryingRpcController)rpcc;
     CellScanner cellScanner = controller != null ? controller.cellScanner() : null;
     OperationQuota quota = null;
+    RpcCallContext context = RpcServer.getCurrentCall();
     // Clear scanner so we are not holding on to reference across call.
     if (controller != null) {
       controller.setCellScanner(null);
@@ -2400,6 +2402,10 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
       }
       if (processed != null) builder.setProcessed(processed.booleanValue());
       addResult(builder, r, controller);
+      boolean clientCellBlockSupported = isClientCellBlockSupport(context);
+      if (clientCellBlockSupported) {
+        addSize(context, r, null);
+      }
       return builder.build();
     } catch (IOException ie) {
       regionServer.checkFileSystem();