Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-12597

Add RpcClient interface and enable changing of RpcClient implementation

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 1.0.0
    • Client
    • None
    • Reviewed
    • Adds an RpcClient Interface and an RpcClientFactory to get RpcClient implementation.
    • client

    Description

      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

      Attachments

        1. HBASE-12597.patch
          7 kB
          Jurriaan Mous
        2. HBASE-12597-v1.patch
          176 kB
          Jurriaan Mous
        3. HBASE-12597-v2.patch
          186 kB
          Jurriaan Mous
        4. HBASE-12597-v3.patch
          190 kB
          Jurriaan Mous
        5. HBASE-12597-v4.patch
          183 kB
          Jurriaan Mous
        6. HBASE-12597-v4.patch
          183 kB
          Michael Stack
        7. HBASE-12597-v5.patch
          187 kB
          Jurriaan Mous
        8. HBASE-12597-v6.patch
          189 kB
          Jurriaan Mous
        9. HBASE-12597-v7.patch
          189 kB
          Jurriaan Mous
        10. HBASE-12597-v8.patch
          190 kB
          Jurriaan Mous
        11. HBASE-12597-v8-branch-1.patch
          190 kB
          Jurriaan Mous

        Activity

          People

            jurmous Jurriaan Mous
            jurmous Jurriaan Mous
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: