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

Jason Lowe commented on HADOOP-9854:
------------------------------------

I'm wondering if the fix is simply to use the appropriate configuration object 
for the tool in question.  Since the tool requires supporting MapReduce 
configs, have it use JobConf which is MapReduce-aware instead of Configuration 
which is not.  For example:

{code}
public static void main(String[] args) {
  ToolRunner.run(new JobConf(), new MyClass(), args);
}
{code}

Otherwise I don't see how we can determine that the particular Configuration 
object is really going to later be a JobConf object and load the deprecated 
keys ahead of time. Even if we tried to fix it up after the fact we could 
encounter situations where the config has conflicting values for keys.  For 
example, two different chunks of code use different keys for the same concept 
and we end up with something like -Dmapred.reduce.tasks=20 and 
-Dmapreduce.job.reduces=100.  If these keys were set before the Configuration 
morphed into a JobConf, we wouldn't know which was the correct setting that 
should survive once JobConf arrives and tries to rectify the situation.
                
> Configuration.set() may be called before all the deprecated keys are 
> registered, causing inconsistent state
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-9854
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9854
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: conf
>    Affects Versions: 2.0.5-alpha
>            Reporter: Sangjin Lee
>            Priority: Blocker
>
> Currently deprecated keys are registered at various times. Some are 
> registered  when the Configuration class itself is initialized, but the vast 
> majority are registered when the JobConf class is initialized.
> Therefore, it is entirely possible (and does happen) that Configuration.set() 
> is called for a key before its deprecation mapping is registered, thus 
> leaving the internal state of Configuration in an inconsistent state.
> We actually had this problem occur in real life, causing the set value not to 
> be recognized.

--
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