Provide C++ binding


Currently, Alluxio has only Filesystem client in Java (with interface alluxio.client.file.FileSystem and an implementation in alluxio.client.file.BaseFileSystem).

This JIRA aims to provide a C++ client exposing this API, so people could invoke Alluxio through C++ code.

=== updated 03/17/2018 ====
phase 1: provide the framework of Alluxio C++ client that can invoke the basic APIs (e.g., (i.e., these APIs without options, void delete(AlluxioURI path) which takes only the basic arguments) of native Alluxio Java client. (Achieved)

phase 2: investigate, design and implement a proper approach to support advanced Alluxio FS APIs (i.e., these APIs with options, void delete(AlluxioURI path, DeleteOptions options) which takes options to enhance the API). The challenge of this phase is that we have various options (almost one for each API) in Java client, keeping the parity between Java client and C++ client manually is challenging and error-prone. Particularly, we are looking for a systematic way that once we modify the Java API by extending a new field in an Option class, there is an easy way to port the change to the corresponding C++ client. For example, we can leverage the interface definition language in protobuf/thrift to define these options and make options auto-generated in C++ and/or Java? Or is there any tool we can translate the Java version of Option classes into C++?




March 20, 2018, 5:33 PM

Bin Fan
March 31, 2018, 8:17 AM

thanks for providing the design doc of phase 2.
I talked with and we suggest to proceed with the choice no 1.

April 3, 2018, 5:41 PM

the implementation of phase2 is in the process

Shane St Savage
May 24, 2019, 5:41 AM

Is this still in progress? I see the cpp branch in the git repo, is someone still working on getting this in to master?

Haoyuan Li
May 31, 2019, 5:13 PM

Hi , would Alluxio’s FUSE Based POSIX API solve your need? If not, could you please describe which part would need the C++ Client? Thanks!




Huamin Chen




Fix versions

Affects versions