[ 
https://issues.apache.org/jira/browse/MAPREDUCE-4942?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13554565#comment-13554565
 ] 

Robert Kanter commented on MAPREDUCE-4942:
------------------------------------------

Those methods all eventually call the {{updateStatus}} method, which uses 
{{UserGroupInformation}} and can throw the {{InterruptedException}}.  Though 
the JavaDoc for {{updateStatus}} doesn't mention the {{InterruptedException}} 
either, only the {{IOException}}.  

{code}
  /** Some methods need to update status immediately. So, refresh
   * immediately
   * @throws IOException
   */
  synchronized void updateStatus() throws IOException, InterruptedException {
    this.status = ugi.doAs(new PrivilegedExceptionAction<JobStatus>() {
      @Override
      public JobStatus run() throws IOException, InterruptedException {
        return cluster.getClient().getJobStatus(status.getJobID());
      }
    });
    if (this.status == null) {
      throw new IOException("Job status not available ");
    }
    this.statustime = System.currentTimeMillis();
  }
{code}

Perhaps it would be better and simpler to make {{updateStatus}} not throw an 
InterruptedException?  
                
> mapreduce.Job has a bunch of methods that throw InterruptedException so its 
> incompatible with MR1
> -------------------------------------------------------------------------------------------------
>
>                 Key: MAPREDUCE-4942
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-4942
>             Project: Hadoop Map/Reduce
>          Issue Type: Bug
>          Components: mrv2
>    Affects Versions: 2.0.2-alpha
>            Reporter: Robert Kanter
>            Assignee: Robert Kanter
>
> The following methods in MR2's {{org.apache.hadoop.mapreduce.Job}} throw an 
> {{InterruptedException}} but don't in MR1, which makes them incompatible.  
> (Their Javadoc comments are also missing that they throw an 
> {{InterruptedException}} anyway)
> I propose that we wrap the {{InterruptedException}} in a 
> {{RuntimeException}}.  
> {code}
> public float setupProgress() throws IOException, InterruptedException
> public float mapProgress() throws IOException, InterruptedException
> public float reduceProgress() throws IOException, InterruptedException
> public boolean isComplete() throws IOException, InterruptedException
> public boolean isSuccessful() throws IOException, InterruptedException
> public void killJob() throws IOException, InterruptedException
> public void killTask(org.apache.hadoop.mapreduce.TaskAttemptID) throws 
> IOException, InterruptedException
> public void failTask(org.apache.hadoop.mapreduce.TaskAttemptID) throws 
> IOException, InterruptedException
> public Counters getCounters() throws IOException, InterruptedException
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to