You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-issues@hadoop.apache.org by "Zhijie Shen (JIRA)" <ji...@apache.org> on 2013/06/15 01:12:21 UTC

[jira] [Resolved] (MAPREDUCE-4942) mapreduce.Job has a bunch of methods that throw InterruptedException so its incompatible with MR1

     [ https://issues.apache.org/jira/browse/MAPREDUCE-4942?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Zhijie Shen resolved MAPREDUCE-4942.
------------------------------------

    Resolution: Fixed

Close the ticket. Actually, these methods are binary compatible with both MRv1 and 0.23. However, due to the conflicting method signature (throwing or not throwing InterruptedException), these methods are source incompatible either with MRv1 or 0.23.

Again, it is better be compatible with MRv1, as it has larger user base, while 0.23 users don't need much change to fix the code. Assume that a MRv1 application is not binary compatible because of mapreduce.Counter, whose binary incompatibility will not be fixed. The user can recompile the code against MRv2 jars, and recompilation will not fail at mapreduce.Job given this ticket fixed.

Will document this imcompatible change in MAPREDUCE-5184 as well.
                
> 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: Sub-task
>          Components: mrv2
>    Affects Versions: 2.0.2-alpha
>            Reporter: Robert Kanter
>            Assignee: Robert Kanter
>             Fix For: 2.1.0-beta
>
>         Attachments: MAPREDUCE-4942.patch
>
>
> 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