[
https://issues.apache.org/jira/browse/HDFS-8407?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Colin Patrick McCabe updated HDFS-8407:
---------------------------------------
Summary: hdfsListDirectory must set errno to 0 on success (was: libhdfs
hdfsListDirectory() API has different behavior than documentation)
> hdfsListDirectory must set errno to 0 on success
> ------------------------------------------------
>
> Key: HDFS-8407
> URL: https://issues.apache.org/jira/browse/HDFS-8407
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: HDFS
> Reporter: Juan Yu
> Assignee: Masatake Iwasaki
> Attachments: HDFS-8407.001.patch, HDFS-8407.002.patch,
> HDFS-8407.003.patch
>
>
> The documentation says it returns NULL on error, but it could also return
> NULL when the directory is empty.
> /**
> * hdfsListDirectory - Get list of files/directories for a given
> * directory-path. hdfsFreeFileInfo should be called to deallocate
> memory.
> * @param fs The configured filesystem handle.
> * @param path The path of the directory.
> * @param numEntries Set to the number of files/directories in path.
> * @return Returns a dynamically-allocated array of hdfsFileInfo
> * objects; NULL on error.
> */
> {code}
> hdfsFileInfo *pathList = NULL;
> ...
> //Figure out the number of entries in that directory
> jPathListSize = (*env)->GetArrayLength(env, jPathList);
> if (jPathListSize == 0) {
> ret = 0;
> goto done;
> }
> ...
> if (ret) {
> hdfsFreeFileInfo(pathList, jPathListSize);
> errno = ret;
> return NULL;
> }
> *numEntries = jPathListSize;
> return pathList;
> {code}
> Either change the implementation to match the doc, or fix the doc to match
> the implementation.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)