Details

    • Type: Sub-task Sub-task
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Client
    • Labels:

      Description

      Creating this as a sub task of HBASE-1015 to define Define C language interface of HBase Client synchronous APIs.

        Issue Links

          Activity

          Hide
          Aditya Kishore added a comment -

          Will attach a patch shortly.

          Show
          Aditya Kishore added a comment - Will attach a patch shortly.
          Hide
          haosdent added a comment -

          Are you use protobuf?

          Show
          haosdent added a comment - Are you use protobuf?
          Hide
          Aditya Kishore added a comment -

          I would use this JIRA to describe and discuss the C interfaces alone.

          Once the interfaces are frozen, any implementation can be built, including a protobuf based client for 0.96 and later release.

          Show
          Aditya Kishore added a comment - I would use this JIRA to describe and discuss the C interfaces alone. Once the interfaces are frozen, any implementation can be built, including a protobuf based client for 0.96 and later release.
          Hide
          Aditya Kishore added a comment -
          Show
          Aditya Kishore added a comment - Patch available at https://reviews.apache.org/r/15079/
          Hide
          Elliott Clark added a comment -

          Here's what I was thinking for C api.

          • Fully async
          • Call backs all take a void pointer for the user to supply their own data that will be needed.
          • No explicit batching. Since everything is async there's no need for it.
          • All mutations start with the struct hb_mutation_type
          • I went with the hidden struct. Even though it necessitates a heap allocation I have been convinced that the encapsulation is worth it.
          • It has set methods. There are no get methods yet. I'm not sure if they will be needed.
          • I think the freeing of backing buffers should be the user's responsibility. There are destroy methods but they are just for implementation created resources.
          • Tests are included using GTest.
          • LibEV was chosen as it provides a good c++ header so creating the underlying rpc implementation will be OO.
          • The CMake modules might need to be re-written.

          I'll put this up on rb.

          Show
          Elliott Clark added a comment - Here's what I was thinking for C api. Fully async Call backs all take a void pointer for the user to supply their own data that will be needed. No explicit batching. Since everything is async there's no need for it. All mutations start with the struct hb_mutation_type I went with the hidden struct. Even though it necessitates a heap allocation I have been convinced that the encapsulation is worth it. It has set methods. There are no get methods yet. I'm not sure if they will be needed. I think the freeing of backing buffers should be the user's responsibility. There are destroy methods but they are just for implementation created resources. Tests are included using GTest. LibEV was chosen as it provides a good c++ header so creating the underlying rpc implementation will be OO. The CMake modules might need to be re-written. I'll put this up on rb.
          Hide
          Elliott Clark added a comment -

          Tabs crept in somehow.

          Show
          Elliott Clark added a comment - Tabs crept in somehow.
          Hide
          Elliott Clark added a comment -

          I was asked to show what would and wouldn't be free'd with hb_admin_t

          Show
          Elliott Clark added a comment - I was asked to show what would and wouldn't be free'd with hb_admin_t
          Show
          Elliott Clark added a comment - https://reviews.apache.org/r/15367/
          Hide
          Elliott Clark added a comment -

          One thing that I should mention is that while the current stub are implemented in C, I would prefer to implement these in C++ with most structs just being a void pointer to the c++ object.

          Show
          Elliott Clark added a comment - One thing that I should mention is that while the current stub are implemented in C, I would prefer to implement these in C++ with most structs just being a void pointer to the c++ object.
          Hide
          haosdent added a comment -

          Provide some performance results may be better.

          Show
          haosdent added a comment - Provide some performance results may be better.
          Hide
          Aditya Kishore added a comment -

          haosdent These are mere interfaces. Can not have any performance number until a concrete implementation.

          Show
          Aditya Kishore added a comment - haosdent These are mere interfaces. Can not have any performance number until a concrete implementation.
          Hide
          Elliott Clark added a comment -
          • Created hbase_connection
          • created some C++ classes to show how things like mutations will be handled.
          • cleaned up .h file includes.
          • tests still pass.
          Show
          Elliott Clark added a comment - Created hbase_connection created some C++ classes to show how things like mutations will be handled. cleaned up .h file includes. tests still pass.
          Hide
          Elliott Clark added a comment -

          Clean up CMake a lot since we have embedded third party libs.

          Show
          Elliott Clark added a comment - Clean up CMake a lot since we have embedded third party libs.
          Hide
          Elliott Clark added a comment -

          I talked with several people who requested that there also be a synchronous client api in C. This should be basically a condition wait + the async client. So I'll finish up the async api work in another issue and then circle back to this.

          Show
          Elliott Clark added a comment - I talked with several people who requested that there also be a synchronous client api in C. This should be basically a condition wait + the async client. So I'll finish up the async api work in another issue and then circle back to this.

            People

            • Assignee:
              Aditya Kishore
              Reporter:
              Aditya Kishore
            • Votes:
              1 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

              • Created:
                Updated:

                Development