You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2014/11/29 19:19:13 UTC

[jira] [Commented] (HBASE-12597) Add RpcClient interface and enable changing of RpcClient implementation

    [ 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 FYI.

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
(v6.3.4#6332)