[ 
https://issues.apache.org/jira/browse/HADOOP-10389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Colin Patrick McCabe updated HADOOP-10389:
------------------------------------------

    Attachment: HADOOP-10388.001.patch

This patch implements an async Hadoop RPC client in C.  It uses libuv and 
protobuf-c.

CMakeLists.txt: the top-level build file which specifies build products.

GenerateProtobufs.cmake: this CMake script invokes the protobuf compiler on the 
various Hadoop protobuf files.

common/hadoop_err.c: implements hadoop error objects which can be easily 
created and managed to represent errors throughout the system.  They have both 
an error code and an error message.  The error message starts with an exception 
name.

common/net.c: network utilities.  This is very minimal since libuv provides 
most of what we need.

common/test.h: unit test macros

common/tree.h: BSD-licensed red-black tree, similar to what we use in libhdfs.

common/queue.h: BSD-licensed list implementation

hdfs/namenode-rpc-unit.c: end-to-end test of the RPC framework.

rpc/call.c: represents an in-progress RPC call.

rpc/client_id.c: represents a 16-byte client ID, as specified in Hadoop RPC.

rpc/conn.c: represents an existing TCP connection to a remote Hadoop server.

rpc/messenger.c: the messenger coordinates all network traffic.  It owns all 
the reactor threads.  Currently there is only one reactor thread, but in the 
future we may want more than one to get more parallelism.

rpc/proxy.c: clients use the proxy to start and manage RPCs, similar to how 
Proxy is used in the Hadoop java code.  There is going to be some more glue 
code here so that each Hadoop RPC will have an equivalent sync and async 
invocation function.

rpc/reactor.c: a reactor is a single thread calling epoll.  The messenger owns 
all reactors.  Connection callbacks happen in the context of the reactor thread.

rpc/shorten.c: shorten is a utility which makes some really long object names 
generated by protobuf-c shorter.

rpc/varint.c: varint handles the serialization and deserialization of variable 
length integers.

Build with "cmake . && make"
Unit tests can be run with "make test."

> Native RPCv9 client
> -------------------
>
>                 Key: HADOOP-10389
>                 URL: https://issues.apache.org/jira/browse/HADOOP-10389
>             Project: Hadoop Common
>          Issue Type: Sub-task
>    Affects Versions: HADOOP-10388
>            Reporter: Binglin Chang
>            Assignee: Colin Patrick McCabe
>         Attachments: HADOOP-10388.001.patch
>
>




--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to