hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "stack (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-12597) Add RpcClient interface and enable changing of RpcClient implementation
Date Sat, 29 Nov 2014 18:19:13 GMT

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

stack commented on HBASE-12597:

Sweet [~jurmous]

You refer to HConnectionImplementation (and in your code to HConnection). Is that because
you have been working off 0.94 or 0.98 rather than branch-1 or master branches?  In master
branch, there is a bunch of cleanup and now we have a Connection Interface.  Perhaps you've
noticed that and your reference to HCI is just because this is still the Implementation? 

Your project looks great (Can you call your client HBaseClient rather than HbaseClient?) 
How does it relate to asynchbase if it atll?  Its more derivative of native hbase client than
asynchbase is?

I see you pass in our configs. Do they work for your async context. I would not be afraid
introducing new ones if it makes your implementation easier... ours have been around a long
time and have been overloaded and their original intent may have been lost over time.  Just

Thats great you carried over codecs. Maybe in netty context, we can drop these and use netty
channel compression instead? (won't work for sasl I suppose but for everything else).

Hmm... you support nonce too? If so, thats great.

> Add RpcClient interface and enable changing of RpcClient implementation
> -----------------------------------------------------------------------
>                 Key: HBASE-12597
>                 URL: https://issues.apache.org/jira/browse/HBASE-12597
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client
>            Reporter: Jurriaan Mous
> Currently HConnectionImplementation works with the included RpcClient which is a direct
implementation and not defined by an interface.
> It would be great to be able to swap out the default RpcClient with another implementation
which can also be controlled by the default HConnectionImplementation. 
> Suggested changes:
> - Create a RpcClient interface which defines all the ways HConnectionImplementation interacts
with an RPC client. Like getting a blocking protobuf service interface or closing the client.
> - Define which RpcClient implementation to construct by setting a configuration variable
which defaults to the current RpcClient.
> - Possibly create an abstract RpcClient class to only load all the basic Rpc layer configurations
to be used in an implementation.
> Why? It enables experimentation with RpcClients which could enable new features or could
be more performant than the included client. 
> I created a new RpcClient implementation based on Netty which can also be called asynchronously.
It would be great to also be able to use this RpcClient in all the default ways and tests
to see if there are any issues with it. 
> https://github.com/jurmous/async-hbase-client/
> https://github.com/jurmous/async-hbase-client/blob/master/src/main/java/org/apache/hadoop/hbase/ipc/AsyncRpcClient.java

This message was sent by Atlassian JIRA

View raw message