hadoop-mapreduce-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Rosenstrauch (JIRA)" <j...@apache.org>
Subject [jira] [Created] (MAPREDUCE-5549) distcp app should fail if m/r job fails
Date Mon, 30 Sep 2013 16:57:24 GMT
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)

Mime
View raw message