[ 
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)

Reply via email to