Repository: hbase Updated Branches: refs/heads/branch-1 cec40f941 -> 36f16bbe1
HBASE-17387 Reduce the overhead of exception report in RegionActionResult for multi() Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/36f16bbe Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/36f16bbe Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/36f16bbe Branch: refs/heads/branch-1 Commit: 36f16bbe1034edf2010706c80ff6702f8693fe22 Parents: cec40f9 Author: tedyu <[email protected]> Authored: Thu Dec 29 19:23:44 2016 -0800 Committer: tedyu <[email protected]> Committed: Thu Dec 29 19:23:44 2016 -0800 ---------------------------------------------------------------------- .../hbase/regionserver/RSRpcServices.java | 21 +++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/36f16bbe/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 ba7beb0..de53540 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 @@ -646,8 +646,11 @@ public class RSRpcServices implements HBaseRPCErrorHandler, RpcCallContext context = RpcServer.getCurrentCall(); IOException sizeIOE = null; Object lastBlock = null; + ClientProtos.ResultOrException.Builder resultOrExceptionBuilder = ResultOrException.newBuilder(); + boolean hasResultOrException = false; for (ClientProtos.Action action : actions.getActionList()) { - ClientProtos.ResultOrException.Builder resultOrExceptionBuilder = null; + hasResultOrException = false; + resultOrExceptionBuilder.clear(); try { Result r = null; @@ -676,8 +679,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler, // use it for the response. // // This will create a copy in the builder. - resultOrExceptionBuilder = ResultOrException.newBuilder(). - setException(ResponseConverter.buildException(sizeIOE)); + hasResultOrException = true; + resultOrExceptionBuilder.setException(ResponseConverter.buildException(sizeIOE)); resultOrExceptionBuilder.setIndex(action.getIndex()); builder.addResultOrException(resultOrExceptionBuilder.build()); if (cellScanner != null) { @@ -697,7 +700,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler, } } } else if (action.hasServiceCall()) { - resultOrExceptionBuilder = ResultOrException.newBuilder(); + hasResultOrException = true; try { Message result = execServiceOnRegion(region, action.getServiceCall()); ClientProtos.CoprocessorServiceResult.Builder serviceResultBuilder = @@ -753,8 +756,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler, pbResult = ProtobufUtil.toResult(r); } lastBlock = addSize(context, r, lastBlock); - resultOrExceptionBuilder = - ClientProtos.ResultOrException.newBuilder().setResult(pbResult); + hasResultOrException = true; + resultOrExceptionBuilder.setResult(pbResult); } // Could get to here and there was no result and no exception. Presumes we added // a Put or Delete to the collecting Mutations List for adding later. In this @@ -762,10 +765,10 @@ public class RSRpcServices implements HBaseRPCErrorHandler, // down in the doBatchOp method call rather than up here. } catch (IOException ie) { rpcServer.getMetrics().exception(ie); - resultOrExceptionBuilder = ResultOrException.newBuilder(). - setException(ResponseConverter.buildException(ie)); + hasResultOrException = true; + resultOrExceptionBuilder.setException(ResponseConverter.buildException(ie)); } - if (resultOrExceptionBuilder != null) { + if (hasResultOrException) { // Propagate index. resultOrExceptionBuilder.setIndex(action.getIndex()); builder.addResultOrException(resultOrExceptionBuilder.build());
