[
https://issues.apache.org/jira/browse/HBASE-16433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15427781#comment-15427781
]
Duo Zhang commented on HBASE-16433:
-----------------------------------
First you can not use the same CompletableFuture, the return type is different
for a RpcClient and a Table level interface. The former one will be a protobuf
message and the latter one will not. And unfortunately, CompletableFuture's
chained api can not do Throwable convert so you still need to do some nest
works...
And if you want to let the whole protobuf services go away, at least you also
need to change the RpcServer right? And if you really want to do this, my
suggestion is to write a protoc extension for HBase which can generate
asynchronous api with a more modern style. If not, you always need to do the
method and type mapping manually and remember to change it every time when the
protobuf definition changed. This is really boring and error-prone.
And as stack said above, he is trying to make our protobuf upgradable. After he
success, I think we could try to upgrade our pb to 3.0 and try generate grpc
interfaces. At that time you could implement your RpcClient start from a more
modern style asynchronous api. But now, I still suggest we should use the old
pb interfaces to implement our AsyncTable. As said above, it has the ability to
support all asynchronous operations although it is not the best solution.
And last, Performance is not everything:)
Thanks.
> Remove AsyncRpcChannel related stuffs
> -------------------------------------
>
> Key: HBASE-16433
> URL: https://issues.apache.org/jira/browse/HBASE-16433
> Project: HBase
> Issue Type: Sub-task
> Affects Versions: 2.0.0
> Reporter: Duo Zhang
> Assignee: Duo Zhang
> Fix For: 2.0.0
>
> Attachments: HBASE-16433.patch
>
>
> AsyncRpcChannel can not be used by protobuf stub. We should implement the
> async logic along with the RpcChannel interface of protobuf.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)