[
https://issues.apache.org/jira/browse/HADOOP-5901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12790989#action_12790989
]
Aaron Kimball commented on HADOOP-5901:
---------------------------------------
Yes, changing the signature for {{FileSystem.setDefaultUri(Configuration,
String)}} to throw an IOException if it cannot create a proper URI from the
String argument would be an incompatible change.
Digging into the changes necessary in the MapReduce codebase, it appears that
({{MiniMRCluster.configureJobConf()}}) is the only use of
FileSystem.setDefaultUri(). So that could be changed to itself throw
IOException easily enough. But that is called by
{{MiniMRCluster.createJobConf()}} which is used in several dozen places
throughout the test codebase.
On the HDFS codebase side, it looks as though all the uses of setDefaultUri are
in test cases which can all be modified to throw more exceptions than they do
now in a straightforward way; or else in places where the URI is generated
programmatically and we know that it's going to be valid. (Hence we can swallow
the IOException.)
So I think our options are as follows:
# Modify {{MiniMRCluster.createJobConf()}} to also throw IOException and modify
all call-sites to catch IOException.
# Early in this patch's development I was throwing an IllegalArgumentException
(unchecked) for this reason (preventing incompatibility). Konstantin S: Are you
still pro-IOException here?
# Make the {{FileSystem.checkName()}} method public. The {{namenode}} argument
in MiniMRCluster which is used to format the URI is passed into MiniMRCluster's
constructor. With a public checkName, we could call {{checkName(namenode)}} in
the MiniMRCluster constructor, which already throws IOException, so clients
already trap that. Then we could swallow the exception (maybe with a log4j
message) in {{createJobConf()}}, knowing that it should never be thrown since
we already verified the URI's sanity. This increases the size of the public
static FileSystem API.
> FileSystem.fixName() has unexpected behaviour
> ---------------------------------------------
>
> Key: HADOOP-5901
> URL: https://issues.apache.org/jira/browse/HADOOP-5901
> Project: Hadoop Common
> Issue Type: Bug
> Components: fs
> Affects Versions: 0.21.0
> Reporter: Steve Loughran
> Assignee: Aaron Kimball
> Priority: Minor
> Fix For: 0.22.0
>
> Attachments: HADOOP-5901.2.patch, HADOOP-5901.3.patch,
> HADOOP-5901.patch
>
>
> {{FileSystem.fixName()}} tries to patch up fs.default.name values, but I'm
> not sure it helps that well.
> Has it been warning about deprecated values for long enough for it to be
> turned off?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.