[ https://issues.apache.org/jira/browse/HBASE-16433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15430219#comment-15430219 ]
Jurriaan Mous commented on HBASE-16433: --------------------------------------- {quote} 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... {quote} Well I currently pass the Netty future from front to back so it is possible. I do this by passing a MessageConverter and IOExceptionConverter to the back. MessageConverter can also be solved within CompletableFuture as you note. {quote} 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. {quote} Well there is not that much manual protobuf work needed since it does not depend on the contents of the protobuf but only the MethodDescriptor. I link directly to the generated source so they fail quickly and in one place if they change and are regenerated. It is not such big of a hassle. I am not suggesting to change the whole server, just giving a quick path for async clients. {quote} 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. {quote} A newer protobuf implementation with more modern style async api would be great. Of course we need to move towards this future. But would a more convenient method for now give more pleasure than pain. I think it is making stuff easier and faster for not that big of a price. > 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)