diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java index 344401f4f3..d603947894 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java +++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/RouterClientProtocol.java @@ -113,7 +113,7 @@ public class RouterClientProtocol implements ClientProtocol { private final ActiveNamenodeResolver namenodeResolver; /** Identifier for the super user. */ - private final String superUser; + private String superUser; /** Identifier for the super group. */ private final String superGroup; /** Erasure coding calls. */ @@ -126,7 +126,13 @@ public class RouterClientProtocol implements ClientProtocol { this.namenodeResolver = rpcServer.getNamenodeResolver(); // User and group for reporting - this.superUser = System.getProperty("user.name"); + try { + this.superUser = UserGroupInformation.getCurrentUser().getShortUserName(); + } catch (IOException ex) { + LOG.warn("Unable to get user name. Fall back to system property " + + "user.name", ex); + this.superUser = System.getProperty("user.name"); + } this.superGroup = conf.get( DFSConfigKeys.DFS_PERMISSIONS_SUPERUSERGROUP_KEY, DFSConfigKeys.DFS_PERMISSIONS_SUPERUSERGROUP_DEFAULT); diff --git a/hadoop-tools/hadoop-openstack/src/main/java/org/apache/hadoop/fs/swift/snative/SwiftNativeFileSystem.java b/hadoop-tools/hadoop-openstack/src/main/java/org/apache/hadoop/fs/swift/snative/SwiftNativeFileSystem.java index 191d56ff71..510cb984d8 100644 --- a/hadoop-tools/hadoop-openstack/src/main/java/org/apache/hadoop/fs/swift/snative/SwiftNativeFileSystem.java +++ b/hadoop-tools/hadoop-openstack/src/main/java/org/apache/hadoop/fs/swift/snative/SwiftNativeFileSystem.java @@ -18,6 +18,7 @@ package org.apache.hadoop.fs.swift.snative; +import org.apache.hadoop.security.UserGroupInformation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.hadoop.classification.InterfaceAudience; @@ -100,7 +101,7 @@ public String getScheme() { } /** - * default class initialization + * default class initialization. * * @param fsuri path to Swift * @param conf Hadoop configuration @@ -115,7 +116,14 @@ public void initialize(URI fsuri, Configuration conf) throws IOException { store = new SwiftNativeFileSystemStore(); } this.uri = fsuri; - String username = System.getProperty("user.name"); + String username; + try { + username = UserGroupInformation.getCurrentUser().getShortUserName(); + } catch (IOException ex) { + LOG.warn("Unable to get user name. Fall back to system property " + + "user.name", ex); + username = System.getProperty("user.name"); + } this.workingDir = new Path("/user", username) .makeQualified(uri, new Path(username)); if (LOG.isDebugEnabled()) {