[
https://issues.apache.org/jira/browse/HBASE-16445?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15465465#comment-15465465
]
Yu Li commented on HBASE-16445:
-------------------------------
Currently in {{AsyncRpcClient#callMethod}} we have below codes:
{code}
connection = createRpcChannel(md.getService().getName(), addr, ticket);
FutureListener<Message> listener = new FutureListener<Message>() {...};
connection.callMethod(md, param, pcrc.cellScanner(), returnType,
getMessageConverterWithRpcController(pcrc), null,
pcrc.getCallTimeout(), pcrc.getPriority())
.addListener(listener);
{code}
It seems to me that we only call {{RpcCallback#run}} or set exception into PCRC
in the listener, but miss the exception handling during connection setup, and
IMHO we should do more things in {{AsyncRpcChannel#connect}} listener and
failure path inside {{AsyncServerResponseHandler#channelRead0}}.
Please correct me if I'm wrong, and if the issue did exist, maybe we could open
another JIRA to track it rather than blocking this one. Thanks.
> Refactor and reimplement RpcClient
> ----------------------------------
>
> Key: HBASE-16445
> URL: https://issues.apache.org/jira/browse/HBASE-16445
> Project: HBase
> Issue Type: Sub-task
> Affects Versions: 2.0.0
> Reporter: Duo Zhang
> Assignee: Duo Zhang
> Fix For: 2.0.0
>
> Attachments: HBASE-16445-v1.patch, HBASE-16445-v2.patch,
> HBASE-16445-v3.patch, HBASE-16445-v4.patch, HBASE-16445.patch
>
>
> There are lots of common logics between RpcClientImpl and AsyncRpcClient. We
> should have much less code comparing to the current implementations.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)