Pārlūkot izejas kodu

HDFS-14176. Replace incorrect use of system property user.name. Contributed by Dinesh Chitlangia.

Ajay Kumar 6 gadi atpakaļ
vecāks
revīzija
399563fec6

+ 8 - 2
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);

+ 10 - 2
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 class SwiftNativeFileSystem extends FileSystem {
   }
 
   /**
-   * default class initialization
+   * default class initialization.
    *
    * @param fsuri path to Swift
    * @param conf  Hadoop configuration
@@ -115,7 +116,14 @@ public class SwiftNativeFileSystem extends FileSystem {
       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()) {