Details
Description
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.
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++; } } }
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.
Attachments
Issue Links
- relates to
-
HADOOP-6701 Incorrect exit codes for "dfs -chown", "dfs -chgrp"
- Closed
- requires
-
HDFS-1736 Break dependency between DatanodeJspHelper and FsShell
- Resolved