[ 
https://issues.apache.org/jira/browse/HDFS-8766?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14940089#comment-14940089
 ] 

Haohui Mai commented on HDFS-8766:
----------------------------------

Thanks for updating the patch!.
{code}
+  if (!s.ok()) {
+    // for now assume this was a down DN, not going to reinvent HDFS-9103
+    if (s.code() == Status::kResourceUnavailable) {
+      errno = ECOMM;
+      bad_datanodes_.insert(datanode);
+    }
+    // otherwise it was a real error so indicate that something's gone wrong
+    return -1;
+  }
+
+  return (ssize_t)read_count;
+}
{code}

There are several issues:

(1) It makes sense to refactor the above code into a function.
(2) the errno should be {{EINTR}}.
(3) When a DN added into the dead DN list, it needs to be removed from the list 
after a pre-configured time.
(4) This function needs a unit test in gmock.

Nit: Things like class name should be in caml cases instead of underscores. In 
order to glue them with hdfs.h, an easy way is to add {{typedef ClassName 
hdfs_internal}} in the implementation.

> Implement a libhdfs(3) compatible API
> -------------------------------------
>
>                 Key: HDFS-8766
>                 URL: https://issues.apache.org/jira/browse/HDFS-8766
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: hdfs-client
>            Reporter: James Clampffer
>            Assignee: James Clampffer
>         Attachments: HDFS-8766.HDFS-8707.000.patch, 
> HDFS-8766.HDFS-8707.001.patch, HDFS-8766.HDFS-8707.002.patch, 
> HDFS-8766.HDFS-8707.003.patch
>
>
> Add a synchronous API that is compatible with the hdfs.h header used in 
> libhdfs and libhdfs3.  This will make it possible for projects using 
> libhdfs/libhdfs3 to relink against libhdfspp with minimal changes.
> This also provides a pure C interface that can be linked against projects 
> that aren't built in C++11 mode for various reasons but use the same 
> compiler.  It also allows many other programming languages to access 
> libhdfspp through builtin FFI interfaces.
> The libhdfs API is very similar to the posix file API which makes it easier 
> for programs built using posix filesystem calls to be modified to access HDFS.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to