Incorrect exit codes for "dfs -chown", "dfs -chgrp"  when input is given in 
wildcard format.
--------------------------------------------------------------------------------------------

                 Key: HADOOP-6702
                 URL: https://issues.apache.org/jira/browse/HADOOP-6702
             Project: Hadoop Common
          Issue Type: Bug
          Components: fs
    Affects Versions: 0.20.2, 0.20.1, 0.20.0, 0.19.1
            Reporter: Ravi Phulari
            Assignee: Ravi Phulari
            Priority: Minor
             Fix For: 0.20.3, 0.21.0, 0.22.0


Currently incorrect exit codes  are given for "dfs -chown", "dfs -chgrp"  when 
input is given in wildcard format.

This bug is due to missing update of errors count in {{FsShell.java}}.

{code:title=FsShell.java|borderStyle=solid}
int runCmdHandler(CmdHandler handler, String[] args,
                                   int startIndex, boolean recursive) 
                                   throws IOException {
    int errors = 0;
    
    for (int i=startIndex; i<args.length; i++) {
      Path srcPath = new Path(args[i]);
      FileSystem srcFs = srcPath.getFileSystem(getConf());
      Path[] paths = FileUtil.stat2Paths(srcFs.globStatus(srcPath), srcPath);
      for(Path path : paths) {
        try {
          FileStatus file = srcFs.getFileStatus(path);
          if (file == null) {
            System.err.println(handler.getName() + 
                               ": could not get status for '" + path + "'");
            errors++;
          } else {
            errors += runCmdHandler(handler, file, srcFs, recursive);
          }
        } catch (IOException e) {
          String msg = (e.getMessage() != null ? e.getLocalizedMessage() :
            (e.getCause().getMessage() != null ? 
                e.getCause().getLocalizedMessage() : "null"));
          System.err.println(handler.getName() + ": could not get status for '"
                                        + path + "': " + msg.split("\n")[0]);
          errors++;
        }
      }
    }
 {code}

If there are no files on HDFS matching to wildcard input then  
{{srcFs.globStatus(srcpath)}} returns 0. 
{{ Path[] paths = FileUtil.stat2Paths(srcFs.globStatus(srcPath), srcPath);}}

Resulting no increment in {{errors}} and command exits with 0 even though 
file/directory does not exist.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to