hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jurriaan Mous (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-12668) Adapt PayloadCarryingRpcController so it can also be used in async way
Date Sat, 13 Dec 2014 22:33:14 GMT

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

Jurriaan Mous commented on HBASE-12668:

I am trying to do this step by step to be sure each step is correct. So I would first propose
an async RpcClient which works with all current sync API. Nothing fancy, just a main AsyncRpcClient
class, A SaslHandler, a new Call class (Or adapt current one), and a Response Handler and
make sure it can be loaded with config to replace main RpcClient. And if it is found to be
working great and better performant it could become the default and the current one could
be removed.

In an async RpcClient a lot of stuff in AsyncProcess would not be needed. (Netty handles that
internally while handling the communication) AsyncProcess now seems to be a complex piece
of code to simulate async calls by throwing sync calls onto new threads and collects all responses.
But it is needed while the old blocking RpcClient exists.

Does it sound like a good path to do this step by step? And if AsyncRpcClient works out as
an optional RpcClient, that we evaluate the next step of removing the sync RpcClient. When
removed it is possible to move over all the AsyncProcess code and introduce a new async RpcClient
interface. And then it would become possible to introduce a new optional Async api for Table

> Adapt PayloadCarryingRpcController so it can also be used in async way
> ----------------------------------------------------------------------
>                 Key: HBASE-12668
>                 URL: https://issues.apache.org/jira/browse/HBASE-12668
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client
>            Reporter: Jurriaan Mous
>            Assignee: Jurriaan Mous
>             Fix For: 1.0.0, 2.0.0
>         Attachments: HBASE-12668-V1.patch, HBASE-12668-V1.patch, HBASE-12668.patch
> With the changes in HBASE-12597 it is possible to create a new RPC client. But in all
places the BlockingRpcChannel is called with a PayloadCarryingRpcController. This controller
is not usable in Async context because some methods are not supported at the moment. (See
TimeLimitedRpcController for the methods that throw UnsupportedOperationException)
> This issue is about implementing these methods so PayloadCarryingRpcController can also
be used in an async context and work the same in a sync context.

This message was sent by Atlassian JIRA

View raw message