HBASE-17387 Reduce the overhead of exception report in RegionActionResult for multi()
This commit is contained in:
parent
7572e96e3a
commit
1c477b2df9
|
@ -719,8 +719,11 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
|
|||
long maxQuotaResultSize = Math.min(maxScannerResultSize, quota.getReadAvailable());
|
||||
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;
|
||||
|
||||
|
@ -749,8 +752,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) {
|
||||
|
@ -774,7 +777,7 @@ public class RSRpcServices implements HBaseRPCErrorHandler,
|
|||
}
|
||||
}
|
||||
} else if (action.hasServiceCall()) {
|
||||
resultOrExceptionBuilder = ResultOrException.newBuilder();
|
||||
hasResultOrException = true;
|
||||
try {
|
||||
com.google.protobuf.Message result =
|
||||
execServiceOnRegion(region, action.getServiceCall());
|
||||
|
@ -832,8 +835,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
|
||||
|
@ -841,10 +844,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());
|
||||
|
|
Loading…
Reference in New Issue