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

Arun C Murthy commented on MAPREDUCE-954:
-----------------------------------------

After a bit more thought I have to insist that we make 
{Job|TaskAttempt|TaskInputOutput|Map|Reduce}Context interfaces. 

Let me explain.

Today each in that list extends the other, however making them abstract classes 
and pairing them with concrete 
{Job|TaskAttempt|TaskInputOutput|Map|Reduce}ContextImpl classes results in the 
necessity for MI for  problem arises since we need MI 
{TaskAttempt|TaskInputOutput|Map|Reduce}ContextImpl (for e.g. 
TaskAttemptContextImpl should need to extend the JobContextImpl *and* be a 
TaskAttemptContext, thus MI). Hence I propose we make the top-level classes 
interfaces.

However, {Mapper|Reduce}.Context will be abstract classes for the same reasons 
that Owen put down.

----

Thoughts?

> The new interface's Context objects should be interfaces
> --------------------------------------------------------
>
>                 Key: MAPREDUCE-954
>                 URL: https://issues.apache.org/jira/browse/MAPREDUCE-954
>             Project: Hadoop Map/Reduce
>          Issue Type: Improvement
>          Components: client
>            Reporter: Owen O'Malley
>            Assignee: Arun C Murthy
>             Fix For: 0.21.0
>
>         Attachments: MAPREDUCE-954.patch
>
>
> When I was doing HADOOP-1230, I was persuaded to make the Context objects as 
> classes. I think that was a serious mistake. It caused a lot of information 
> leakage into the public classes.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to