hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nick Dimiduk (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-14443) Add request parameter to the TooSlow/TooLarge warn message of RpcServer
Date Mon, 21 Sep 2015 17:05:04 GMT

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

Nick Dimiduk commented on HBASE-14443:
--------------------------------------

I would be fine with committing a change like this and opening a future ticket for a more
general solution -- what you have here will help quite a lot.

One other comment though: probably folks are monitoring their log files and parsing this output
-- I think we should consider it a "loose" API. Your changes here, do they remove any of the
json fields that were generated previously? Do you change the meaning of any existing fields?
I would prefer this change only add new fields to the json message, rather than change or
remove existing fields. That way we don't break our ops friends' automation.

> 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: Operability, rpc
>    Affects Versions: 1.2.1
>            Reporter: Jianwei Cui
>            Assignee: Jianwei Cui
>            Priority: Minor
>         Attachments: HBASE-14443-trunk-v1.patch
>
>
> 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)

Mime
View raw message