David Rosenstrauch created MAPREDUCE-5549: ---------------------------------------------
Summary: distcp app should fail if m/r job fails Key: MAPREDUCE-5549 URL: https://issues.apache.org/jira/browse/MAPREDUCE-5549 Project: Hadoop Map/Reduce Issue Type: Bug Components: distcp, mrv2 Reporter: David Rosenstrauch I run distcpv2 in a scripted manner. The script checks if the distcp step fails and, if so, aborts the rest of the script. However, I ran into an issue today where the distcp job failed, but my calling script went on its merry way. Digging into the code a bit more (at https://svn.apache.org/repos/asf/hadoop/common/trunk/hadoop-tools/hadoop-distcp/src/main/java/org/apache/hadoop/tools/DistCp.java), I think I see the issue: the distcp app is not returning an error exit code to the shell when the distcp job fails. This is a big problem, IMO, as it prevents distcp from being successfully used in a scripted environment. IMO, the code should change like so: Before: {code:title=org.apache.hadoop.tools.DistCp.java} //... public int run(String[] argv) { //... try { execute(); } catch (InvalidInputException e) { LOG.error("Invalid input: ", e); return DistCpConstants.INVALID_ARGUMENT; } catch (DuplicateFileException e) { LOG.error("Duplicate files in input path: ", e); return DistCpConstants.DUPLICATE_INPUT; } catch (Exception e) { LOG.error("Exception encountered ", e); return DistCpConstants.UNKNOWN_ERROR; } return DistCpConstants.SUCCESS; } //... {code} After: {code:title=org.apache.hadoop.tools.DistCp.java} //... public int run(String[] argv) { //... Job job = null; try { job = execute(); } catch (InvalidInputException e) { LOG.error("Invalid input: ", e); return DistCpConstants.INVALID_ARGUMENT; } catch (DuplicateFileException e) { LOG.error("Duplicate files in input path: ", e); return DistCpConstants.DUPLICATE_INPUT; } catch (Exception e) { LOG.error("Exception encountered ", e); return DistCpConstants.UNKNOWN_ERROR; } if (job.isSuccessful()) { return DistCpConstants.SUCCESS; } else { return DistCpConstants.UNKNOWN_ERROR; } } //... {code} -- This message was sent by Atlassian JIRA (v6.1#6144)