Yeah there's currently two different implementation efforts on-going. I started working on a cpp client a while ago. Then there was some interest in working on the cpp client from other parties. So I put some of the implementation up. Things stayed there for a while. Then interest surged again. Vamsi had been working on some code away from jira's.
As I see it right now, the cpp client is a great place to learn from our mistakes. Async client is needed; it's simpler and cleaner. Retrofitting async onto of a synchronous implementation leads to a very large mess (I give you AsyncProcess). So I've been working on a fully async client using Boost, Folly and Wangle. These are the libraries that power thrift at Facebook. So I have some good faith in them being very fast and well maintained. Folly and Wangle together allow for very few copy network layer. I've provided a convenience docker file that has all libraries needed. This allows everyone that's building to build vs the exact same versions. Vamsi et al have created something that works now. It's able to connect and send some commands. It's synchronous building on the poco library. It builds using autotools. For me I have a few concerns around the other implementations: * Who will support it. The HBase community has not had good luck with large code drops from people who are not running the code every day. * Sync client has been very hard to keep a clean code base. Why start with that when there's a way forward that doesn't * Poco: It's a library that I haven't heard of and I don't know the scale/testing of it. * There's code with other people's copyrights on the headers. For me this is just a no-go. Importing code that has questions about who wrote what is just a recipe to have Apache's lawyers get upset. Dima raised some points that some things look to be gnu licensed. * It uses XML for configuration of a native lib. That's something that is VERY strange. I don't know another client lib that does that. For the async implementation there are still some things that need to be cleaned up: * Some people would like to use a build system other than buck. That's fine, I think anyone that wanted to add on a cmake file would be a nice addition. * There's still more work to go. Right now we can connect, send the header, send a request header, and serialize across the request body. Getting the response isn't there, and locating things in meta isn't done. On Mon, Apr 18, 2016 at 2:56 PM, Stack <[email protected]> wrote: > Correct me if I am wrong, but it seems like there are two (different?) C++ > clients underway? There is the work by Vamsi Mohan V S Thattikota that is > going on in HBASE-15534 and then there is what seems like a different > effort over in HBASE-14850 C++ client implementation by the mighty Elliott. > > Whats up? We going to carry two c++ clients? Work together? > > Thanks, > St.Ack >
