Jianwei Cui created HBASE-14443:
-----------------------------------

             Summary: Add request parameter to the TooSlow/TooLarge warn 
message of RpcServer
                 Key: HBASE-14443
                 URL: https://issues.apache.org/jira/browse/HBASE-14443
             Project: HBase
          Issue Type: Improvement
          Components: rpc
            Reporter: Jianwei Cui
            Priority: Minor
             Fix For: 1.2.1


The RpcServer will log a warn message for TooSlow or TooLarge request as:
{code}
        logResponse(new Object[]{param},
            md.getName(), md.getName() + "(" + param.getClass().getName() + ")",
            (tooLarge ? "TooLarge" : "TooSlow"),
            status.getClient(), startTime, processingTime, qTime,
            responseSize);
{code}
The RpcServer#logResponse will create the warn message as:
{code}
if (params.length == 2 && server instanceof HRegionServer &&
        params[0] instanceof byte[] &&
        params[1] instanceof Operation) {
      ...
      responseInfo.putAll(((Operation) params[1]).toMap());
      ...
    } else if (params.length == 1 && server instanceof HRegionServer &&
        params[0] instanceof Operation) {
      ...
      responseInfo.putAll(((Operation) params[0]).toMap());
      ...
    } else {
      ...
    }
{code}
Because the parameter is always a protobuf message, not an instance of 
Operation, the request parameter will not be added into the warn message. The 
parameter is helpful to find out the problem, for example, knowing the 
startRow/endRow is useful for a TooSlow scan. To improve the warn message, we 
can transform the protobuf request message to corresponding Operation subclass 
object by ProtobufUtil, so that it can be added the warn message. Suggestion 
and discussion are welcomed.  



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

Reply via email to