[
https://issues.apache.org/jira/browse/HADOOP-2567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12557498#action_12557498
]
chris.douglas edited comment on HADOOP-2567 at 1/9/08 5:03 PM:
---------------------------------------------------------------
Would it be make sense to use UserGroupInformation to determine the home dir?
Something like:
{code:java}
(DistributedFileSystem)
public void initialize(URI uri, Configuration conf) throws IOException {
...
try {
this.workingDir = getHomeDirectory(UserGroupInformation.login(conf));
} catch (LoginException e) {
throw (IOException)new IOException("Could not set working
dir").initCause(e);
// this.workingDir = getHomeDirectory(); // ?
}
}
(FileSystem)
Path getHomeDirectory(UserGroupInformation ugi) {
return new Path("/user/" + ugi.getUserName()).makeQualified(this);
}
{code}
A failed login could also set the default as it is now, i.e. using
System.getProperty. I'm not sure of the best option in that case.
The best reason for this: agents can just use the credentials/conf from the
user to resolve relative paths as in:
setWorkingDirectory(getHomeDirectory(ticket)).
This would probably only apply to DistributedFileSystem. The attached patch
retains FileSystem::getHomeDirectory(), but a null ugi and/or overrides that
ignore it would probably be at least as clean.
[ edit - formatting ]
was (Author: chris.douglas):
Would it be make sense to use UserGroupInformation to determine the home
dir? Something like:
{{code:java}}
(DistributedFileSystem)
public void initialize(URI uri, Configuration conf) throws IOException {
...
try {
this.workingDir = getHomeDirectory(UserGroupInformation.login(conf));
} catch (LoginException e) {
throw (IOException)new IOException("Could not set working
dir").initCause(e);
// this.workingDir = getHomeDirectory(); // ?
}
}
(FileSystem)
Path getHomeDirectory(UserGroupInformation ugi) {
return new Path("/user/" + ugi.getUserName()).makeQualified(this);
}
{{code}}
A failed login could also set the default as it is now, i.e. using
System.getProperty. I'm not sure of the best option in that case.
The best reason for this: agents can just use the credentials/conf from the
user to resolve relative paths as in:
setWorkingDirectory(getHomeDirectory(ticket)).
This would probably only apply to DistributedFileSystem. The attached patch
retains FileSystem::getHomeDirectory(), but a null ugi and/or overrides that
ignore it would probably be at least as clean.
> add FileSystem#getHomeDirectory() method
> ----------------------------------------
>
> Key: HADOOP-2567
> URL: https://issues.apache.org/jira/browse/HADOOP-2567
> Project: Hadoop
> Issue Type: New Feature
> Components: fs
> Reporter: Doug Cutting
> Assignee: Doug Cutting
> Fix For: 0.16.0
>
> Attachments: 2567-3.patch, HADOOP-2567-1.patch, HADOOP-2567-2.patch,
> HADOOP-2567.patch
>
>
> The FileSystem API would benefit from a getHomeDirectory() method.
> The default implementation would return "/user/$USER/".
> RawLocalFileSystem would return System.getProperty("user.home").
> HADOOP-2514 can use this to implement per-user trash.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.