You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Anoop Sam John (JIRA)" <ji...@apache.org> on 2016/11/25 16:09:58 UTC

[jira] [Commented] (HBASE-15437) Response size calculated in RPCServer for warning tooLarge responses does NOT count CellScanner payload

    [ https://issues.apache.org/jira/browse/HBASE-15437?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15696201#comment-15696201 ] 

Anoop Sam John commented on HBASE-15437:
----------------------------------------

{code}
RpcCallContext context = RpcServer.getCurrentCall();
2525	    Object lastBlock = null;
2526	    // Clear scanner so we are not holding on to reference across call.
2527	    if (controller != null) {
{code}
This extra accounting is not needed.  You can see this private method called from get(final RpcController controller,final GetRequest request) where we are doing the accounting now. Other place is doNonAtomicRegionMutation() where also accounting is already in place.
The other place addition looks ok

In RpcServer#call(), we will have to get the Call instance from ThreadLocal.. This point is discussed above.. Its a pity we dont pass Call object here.  So what do u say?  How we can change signature?

> Response size calculated in RPCServer for warning tooLarge responses does NOT count CellScanner payload
> -------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-15437
>                 URL: https://issues.apache.org/jira/browse/HBASE-15437
>             Project: HBase
>          Issue Type: Bug
>          Components: IPC/RPC
>            Reporter: deepankar
>            Assignee: deepankar
>         Attachments: HBASE-15437-v1.patch, HBASE-15437-v2.patch, HBASE-15437.patch
>
>
> After HBASE-13158 where we respond back to RPCs with cells in the payload , the protobuf response will just have the count the cells to read from payload, but there are set of features where we log warn in RPCServer whenever the response is tooLarge, but this size now is not considering the sizes of the cells in the PayloadCellScanner. Code form RPCServer
> {code}
>       long responseSize = result.getSerializedSize();
>       // log any RPC responses that are slower than the configured warn
>       // response time or larger than configured warning size
>       boolean tooSlow = (processingTime > warnResponseTime && warnResponseTime > -1);
>       boolean tooLarge = (responseSize > warnResponseSize && warnResponseSize > -1);
>       if (tooSlow || tooLarge) {
>         // when tagging, we let TooLarge trump TooSmall to keep output simple
>         // note that large responses will often also be slow.
>         logResponse(new Object[]{param},
>             md.getName(), md.getName() + "(" + param.getClass().getName() + ")",
>             (tooLarge ? "TooLarge" : "TooSlow"),
>             status.getClient(), startTime, processingTime, qTime,
>             responseSize);
>       }
> {code}
> Should this feature be not supported any more or should we add a method to CellScanner or a new interface which returns the serialized size (but this might not include the compression codecs which might be used during response ?) Any other Idea this could be fixed ?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)